线性回归与逻辑回归


线性回归的算法原理

线性回归特性:结果与特征之间是一次函数

非线性回归特性:结果与特征之间不是一次函数关系,比如二次函数、三次函数

损失函数:

  计算每一个样本点的结果值和当前的函数值的差值。具体到案例,所使用的是残差平方和,这是一种常用的损失函数

最小二乘法:

  只要有一条线,就可以通过损失函数来计算假设结果为这条线的情况下,损失值的大小。这里的最小二乘法是要找到一组a、b的值,使得损失值达到最小。(这里的二乘指平方)

线性回归的优点

运算速度快(函数简单)

可解释性强(有公式)

对线性关系拟合效果好

缺点

预测精度较低(只要求最小损失值)

不相关的特征会影响结果

容易出现过拟合

逻辑回归

逻辑回归解决分类问题,在中间过程中,使用的是回归方法

 这里涉及了概率对数函数(Logit)的数学推导。在输出结果时,借助极大似然估计的方法对预测出的结果进行损失的估计

线性回归代码

import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np

#假设数据偏移量为2.128,并且生成了100个点,作为样本数据
#生成数据的方法
def generateData():
   X=[]
   Y=[]
   for i in range(0,100):
      tem_x=[]
      tem_x.append(i)
      X.append(tem_x)
      tem_y=[]
      tem_y.append(i+2.128+np.random.uniform(-15,15))
      y.append(tem_y)
    plt.scatter(X,y,alpha=0.6)#绘制散点图,透明度为0.6(颜色浅,好看)
    return X,y

#主方法
if __name__=='__main__'
   np.random.seed(0)
   X,y=generateData()
   print(len(X))
   X_train,X_test,y_train,y_test=
train_test_split(X,y,test_size=0.2,random_state=0)
   regressor=LinearRegression()
   regressor.fit(X_train,y_train)
   y_result=regressor.predict(X_test)
   plt.plot(X_test,y_result,color=
'red',alpha=0.6,linewidth=3,label='Predicted Line')#plotting
   plt.show()