Python机器学习实战:波士顿房价预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。


练习题

波士顿房价预测数据集来源于1978年美国某经济杂志。Scikit-learn中自带该数据。它包含若干波士顿房屋的价格及相关数据,共506个样例(样本),每个样例包含14个数据项(属性)。下表给出了这14个属性列的名称和具体的含义,其中最后一项房屋均价是待预测的目标列,即房价。

分别使用普通线性回归、岭回归和套索回归对波士顿房屋均价进行预测,并比较预测效果。


分析与Python代码

1、导入模块

import pandas as pd
import matplotlib.pyplot as plt
# 拆分数据的模块
from sklearn.model_selection import train_test_split
# 获得普通线性模型、岭回归模型、套索回归模型
from sklearn.linear_model import LinearRegression, Ridge, Lasso
# 模型效果评估
from sklearn.metrics import r2_score

2、读取并清洗数据(关键)

data = pd.read_csv('HousingData.csv')
data.info() #查看数据的类型,完整性

以上结果显示,该数据集有缺失值,因此我们对数据集做直接删除含有缺失值的行的处理。处理后再次检查数据情况,数据集没有缺失值。

data.dropna(inplace=True) #删除有缺失的样本
data.info() #再次查看数据的类型,完整性

3、定义变量

y = data['MEDV'] # 标签-房价
X = data.drop(['MEDV'], axis=1) #去掉标签(房价)的数据子集

因变量为房价,自变量为除了房价以外的其他13项属性。

4、拆分数据为训练集和测试集

X_train为训练数据, y_train为训练集标签,X_test为测试数据,y_test为测试集标签。

抽取90%的数据作为训练集, 用剩余样本进行分类结果测试。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1)

5、创建机器学习模型

分别创建普通线性回归、岭回归及套索回归模型

line = LinearRegression()
ridge = Ridge()
lasso = Lasso()

6、训练和预测

将三个模型分别在训练集上进行训练,并在测试集上预测得到结果。

# 训练
line.fit(X_train, y_train) 
ridge.fit(X_train,y_train)
lasso.fit(X_train, y_train) 
# 预测
line_y_pred = line.predict(X_test)
ridge_y_pred = ridge.predict(X_test)
lasso_y_pred = lasso.predict(X_test)

7、绘制图形

将三个模型预测出的房价分别绘制在同一个线图中,并和真实的房价比较。

plt.figure(figsize = (14,7))
plt.plot(y_test.values,c="r",label="y_test", linestyle = '-')
plt.plot(line_y_pred,c="b",label="line_y_pred", linestyle = '--')
plt.plot(ridge_y_pred,c="black",label="Ridge_y_pred", linestyle = '-.')
plt.plot(lasso_y_pred,c="g",label="Lasso_y_pred", linestyle = ':')
plt.legend()
plt.show()

对比3个回归模型对房价的预测,可以简单地看出Line线(普通线性回归)更接近原始数据,且趋势也接近原始数据。为了进一步确认哪个模型更好,需要计算它们的判定系数R2,再进行对比。

8、模型评估

line_score = r2_score(y_test, line_y_pred)
ridge_score = r2_score(y_test, ridge_y_pred)
lasso_score = r2_score(y_test, lasso_y_pred)
print('线性回归R2:', line_score, '\n'
      '岭回归R2:', ridge_score, '\n'
      '套索回归R2:', lasso_score)
线性回归R2: 0.6639129481248678 
岭回归R2: 0.6534546368301792 
套索回归R2: 0.5724075030413937

由上面得到的R2值可以看出,预测波士顿房价时,普通线性回归模型比其他两个模型要好,同时岭回归比套索回归模型稍好一些。


都读到这里了,不妨关注、点赞一下吧!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值