回归问题:目标值连续
分类问题:目标值离散
一、线性回归概念
线性关系:二维直线关系、三维平面关系
线性回归:y=kx+b。其中,k、x和b可以为多维向量,表示的是多维属性和权重的一种组合。
目标:使用线性回归式进行预测
重难点:求解矩阵k
矩阵运算:np.dot(a,b)
矩阵的发明是为了简便运算
二、寻找最优模型
(一)思路
因为预测结果与真实值之间存在误差,所以算法需要不断迭代,找到误差平方和最小的模型。
方法一:最小二乘法的正规方程
通过寻找损失函数(误差平方和)的最小值,得到能使总损失最小的k。
缺点:当特征过于复杂时,运算代价大。通常来说,当数据小于10000时,还是可以接受的。另外,正规方程求解法只适用于线性模型,不适合逻辑回归模型等其他模型。
方法二:最小二乘法之梯度下降
当面对庞大的训练数据时(官方建议数据大于10万条),我们就使用梯度下降对模型进行迭代。
思路:k+学习率x方向
学习率α:表示上升或下降的程度,需要手动指定
优点:适用于各类模型
(二)API
1.最小二乘法正规方程API:sklearn.linear_model.LinearRegression()
2.最小二乘法之梯度下降:sklearn.linear_model.SGDRegressor()
(三)实例
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
def mylinear():
'''
线性回归直接预测房子价格
:return:
'''
#获取数据
lb=load_boston()
#分割数据
x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size=