导入波士顿房价模块
目标:使用scikit_learn内置的波士顿房价数据集作为训练集,用线性回归模型(没有正则项)对数据进行拟合,对房价进行预测,并绘制真实房价与预测房价走势图
数据集探索
导入波士顿数据集,输出波士顿数据中的健,输出数据的维度,数据集中的维度,数据集中的描述
from sklearn.datasets import load_boston
boston=load_boston()
boston.keys()
boston['data'].shape
print(boston['DESCR'])
拟合数据并进行预测
导入线性回归模型,并进行拆分数据
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
将数据拆分成训练集和测试集,(注意记成X,X,y,y,以防遗漏)
给出随机种子,确保每次生成的随机序列一致
X_train,X_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=36)
拟合训练数据,接口是fit
lr_boston=LinearRegression().fit(X_train,y_train)
预测数据
y_predict=lr_boston.predict(X_test)
y_predict
三种方法评估线性回归模型(MAE、MSE、r2_score)
均方误差
from sklearn.metrics import mean_squared_error as MSE
MSE(y_test,y_predict)
平均绝对误差
from sklearn.metrics import mean_absolute_error as MAE
MAE(y_predict,y_test)
可解释性方差
r2_score,真实值在前,预测值在后,范围是[0~1],越接近1越好
from sklearn.metrics import r2_score
r2_score(y_test,y_predict)
输出线性回归模型的系数和截距
注意,coef后面还有一个“_”(下划线))当coef是负数时,就不好,是减分项
print('lr_boston.coef_:{}'.format(lr_boston.coef_[:]))
print('lr_boston.intercept_:{}'.format(lr_boston.intercept_))
绘制波士顿房价真实房价和预测房价走势图
plt.figure()创建画布
import matplotpltlib.pylpot as plt
import numpy as np
plt.figure()
默认不支持中文,修改RC参数
plt.rcParams['font.sans-serif']='SimHei
`plt.rcParams['axes,unicode_minus']=False
绘图
x=np.arange(1,y_predict.shape[0]+1)
真实值的走势
plt.plot(x,y_test,marker="o",linestyle=":",makersize=5)
预测值的走势
plt.plot(x,y_predict,marker="*",makersize=5)
添加图例
plt.ledgend(['真实房价'],['预测房价'])
添加标题
plt.title("波士顿真实房价与预测房价走势图")
展示
plt.show()
岭回归模型的应用
目标:继续使用波士顿房价数据集,这次采用岭回归模型对数据进行拟合
导入岭回归模型
和线性回归模型相比加入了L2正则项,限制系数大小,让系数趋于0,防止过拟合
from sklearn.linear_model import Ridge
使用岭回归模型对数据进行拟合
alpha默认为1.0,alpha越大,系数越小,alpha=0时,即为线性回归
ridge=Ridge(alpha=1.0)
训练数据
ridge.fit(X_train,y_train)
预测数据
预测数据,输出系数和偏置
y_predict_ridge=ridge.predict(X_test)
print('y_predict_ridge.coef_:{}'.format(y_predict_ridge.coef_[:]))
print('y_predict_ridge.intercept_:{}'.format(y_predict_ridge.intercept_))
三种方法评估岭回归模型(MAE、MSE、r2_score)
均方误差
from sklearn.metrics import mean_squared_error as MSE
mse_rid=MSE(y_test,y_predict)
print("岭回归模型的均方误差为:\n",mse_rid)
平均绝对误差
from sklearn.metrics import mean_absolute_error as MAE
mae_rid=MAE(y_predict,y_test)
print("岭回归模型的平均绝对误差为:\n",mae_rid)
可解释性方差
r2_score,真实值在前,预测值在后,范围是[0~1],越接近1越好
from sklearn.metrics import r2_score
r2_score(y_test,y_predict)
套索回归模型的应用
目标:继续使用波士顿房价数据集,这次使用的套索回归模型对数据进行拟合
导入套索回归模型
导入套索回归模型
from sklearn.linear_model import Lasso
拟合数据
lasso=Lasso()
lasso.fit(X_train,y_train)
预测数据
预测数据,输出系数和偏置
y_predict=lasso.predict(X_test)
print('y_predict.coef_:{}'.format(y_predict.coef_[:]))
print('y_predict.intercept_:{}'.format(y_predict.intercept_))
三种方法评估套索回归模型(MAE、MSE、r2_score)
均方误差
from sklearn.metrics import mean_squared_error as MSE
mse_las=MSE(y_test,y_predict)
print("套索回归模型的均方误差为:\n",mse_las)
平均绝对误差
from sklearn.metrics import mean_absolute_error as MAE
mae_las=MAE(y_predict,y_test)
print("套索回归模型的平均绝对误差为:\n",mae_las)
可解释性方差
r2_score,真实值在前,预测值在后,范围是[0~1],越接近1越好
from sklearn.metrics import r2_score
r2_score(y_test,y_predict)