线性回归与逻辑回归
线性回归的算法原理
线性回归特性:结果与特征之间是一次函数
非线性回归特性:结果与特征之间不是一次函数关系,比如二次函数、三次函数
损失函数:
计算每一个样本点的结果值和当前的函数值的差值。具体到案例,所使用的是残差平方和,这是一种常用的损失函数
最小二乘法:
只要有一条线,就可以通过损失函数来计算假设结果为这条线的情况下,损失值的大小。这里的最小二乘法是要找到一组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()