定义:线性回归通过一个或者多个自变量与因变量之间之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合
比如y=kx+b模型 已知x求k和b的值 然后再根据x值求y的值。
案例:这里有2010–2019年的房价的数据。这数据年度数据叫做x,然后求2020年的房价 这时候你已经知道了k和b,然后把x带入公式之中就可以求2020年的了,这就是预测。
求解K值的方法:
(1)正规方程求解
(2)梯度下降方法
(3)岭回归方法
案例一:正规方程
from sklearn.datasets import load_boston#导入数据源
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge#获取回归系数,正规方程求解方法,梯度下降方法,岭回归
from sklearn.model_selection import train_test_split#分割数据集
from sklearn.preprocessing import StandardScaler#标准化处理
from sklearn.metrics import mean_absolute_error#均方误差
lb=load_boston()#获取数据
#x_train,x_test为自变量也就是特征值 y_train,y_test是因变量也就是目标值
x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size=0.25)
#特征值进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_test=std_x.fit_transform(x_test)
#将数据集进行维度处理 变成二维数组
y_train=y_train.reshape(-1, 1)
y_test=y_test.reshape(-1,1)
#目标值进行标准化处理
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_test=std_y.fit_transform(y_test)
# 正规方程求解方程式预测结果,求解的权重值
lr = LinearRegression()
lr.fit(x_train,y_train)
print(lr.coef_)
#预测测试集房子的价格
y_lr_predict=std_y.inverse_transform(lr.predict(x_test))
print('正规方程测试集里面每个房子的预测价格',y_lr_predict)
#y_test为真实值 y_lr_predict为预测值
print('正规方程的均方误差:',mean_absolute_error(std_y.inverse_transform(y_test),y_lr_predict))
from sklearn.datasets import load_boston#导入数据源
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge#获取回归系数,正规方程求解方法,梯度下降方法,岭回归
from sklearn.model_selection import train_test_split#分割数据集
from sklearn.preprocessing import StandardScaler#标准化处理
from sklearn.metrics import mean_absolute_error#均方误差
lb=load_boston()#获取数据
#x_train,x_test为自变量也就是特征值 y_train,y_test是因变量也就是目标值
x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size=0.25)
#特征值进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_test=std_x.fit_transform(x_test)
#将数据集进行维度处理 变成二维数组
y_train=y_train.reshape(-1, 1)
y_test=y_test.reshape(-1,1)
#目标值进行标准化处理
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_test=std_y.fit_transform(y_test)
#梯度下降进行房价预测
sgd=SGDRegressor()
sgd.fit(x_train,y_train)
print(sgd.coef_)
y_sgd_predict=std_y.inverse_transform(sgd.predict(x_test))
print('测试集里面每个房子的预测价格',y_sgd_predict)
print('梯度下降的均方误差:', mean_absolute_error(std_y.inverse_transform(y_test), y_sgd_predict))
from sklearn.datasets import load_boston#导入数据源
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge#获取回归系数,正规方程求解方法,梯度下降方法,岭回归
from sklearn.model_selection import train_test_split#分割数据集
from sklearn.preprocessing import StandardScaler#标准化处理
from sklearn.metrics import mean_absolute_error#均方误差
lb=load_boston()#获取数据
#x_train,x_test为自变量也就是特征值 y_train,y_test是因变量也就是目标值
x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size=0.25)
#特征值进行标准化处理
std_x=StandardScaler()
x_train=std_x.fit_transform(x_train)
x_test=std_x.fit_transform(x_test)
#将数据集进行维度处理 变成二维数组
y_train=y_train.reshape(-1, 1)
y_test=y_test.reshape(-1,1)
#目标值进行标准化处理
std_y=StandardScaler()
y_train=std_y.fit_transform(y_train)
y_test=std_y.fit_transform(y_test)
#岭回归进行预测房价
rd=Ridge(alpha=1.0)
rd.fit(x_train,y_train)
print(rd.coef_)
#预测测试集房子的价格
y_rd_predict=std_y.inverse_transform(rd.predict(x_test))
print('测试集里面每个房子的预测价格',y_rd_predict)
print('岭回归的均方误差:', mean_absolute_error(std_y.inverse_transform(y_test), y_rd_predict))
总结:线性回归预测的步骤
1.导入相关的python包
2.导入数据集
3.将数据集进行拆分为训练集和测试集
4.进行标准化处理
5.用想对应的方法进行求权重
6.直接预测