三种回归模型对波士顿房价进行预测

导入波士顿房价模块

目标:使用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)
  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值