加州房价篇 (三) : 模型的训练,评估和房价的预测

万事俱备!

运行本篇文章代码时必须先按顺序运行加州房价篇 (一) : 了解数据加州房价篇 (二) : 处理数据中的所有代码

在正式开始之前,我们得先把我们的数据分成训练集(train set)和测试集(test set),因为要避免过度拟合(overfit),在中文里,矫枉过正的意思和过度拟合非常像,

打个比方,我现在在和女生甲谈恋爱,我问甲喜欢什么样的男生,甲说她喜欢短头发的男生,还说她喜欢听歌,喜欢吃辣,合计一百条规矩,我按照这些标准去要求自己,和甲处的很好,后来因为一些原因我和甲分手了,我又和女生乙谈恋爱,结果乙喜欢长头发的男生,喜欢写诗而不喜欢听歌,喜欢吃清淡的食物,这个时候我的处境就非常尴尬

从机器学习的角度来说,这个时候我在和女生谈恋爱这件事上,就过度拟合了,我应当是要让自己符合大部分女生的要求,我们的模型也应当是要对加州大部分地区都能做出预测,而不是只能预测我们同事收集过数据的地区

把数据分成训练集和测试集,就好比我在和甲谈恋爱时也和乙保持联系,那我的头发可能就不是短而是中等长度,我在学唱歌的同时也会学写诗,总而言之,能避免过度拟合

test_ratio=0.2 #打算把数据中%20的地区放入测试集
shuffled_indices = np.random.permutation(len(housing_complete)) # 打乱一下顺序
test_set_size = int(len(housing_complete) * test_ratio)
test_indices = shuffled_indices[:test_set_size] 
train_indices = shuffled_indices[test_set_size:]# 获得对应的下标
#一般来说,把完全处理好的特征集记作X,目标集记作y
X_train=housing_complete.iloc[train_indices]
X_test=housing_complete.iloc[test_indices]
y_train=housing_target.iloc[train_indices]
y_test=housing_target.iloc[test_indices]

看看是不是一一对应

len(housing_complete)

输出:20640

len(X_train)

输出:16512

len(X_test)

输出:4128

4128+16512=20640

选择,训练并评估模型

加州房价篇是入门篇,旨在让大家对机器学习的整个过程有一个全面的认识,广度和深度之间往往无法兼顾,模型的原理我在后面的篇章中会有详细的阐述

机器学习经过这么多年的发展,前人已经为我们准备好了许多久经磨砺,却又经久不衰的模型,比如随机森林(RandomForest)模型,我们拿来就能用

from sklearn.ensemble import RandomForestRegressor
forest_reg = RandomForestRegressor()
forest_reg.fit(X_train, y_train)#用训练集训练模型

利用测试集的前十个地区,我们来看看效果

forest_reg.predict(X_test[:10])

输出:
在这里插入图片描述

y_test[:10].values

输出:
在这里插入图片描述

嗯,除了第一个地区差距有点大之外,还不赖,不过我们就只能用肉眼来判断一个模型的好坏吗?

当然不是,现在一般用均方根误差(RMSE)来表示一个模型的好坏,感兴趣的朋友可以搜索均方根误差,看看具体的公式,简而言之,得出的数字越小,模型越好,数字越大,模型越差,我们来试试

from sklearn.metrics import mean_squared_error
test_predict=forest_reg.predict(X_test)
MSE=mean_squared_error(test_predict,y_test)
RMSE=np.sqrt(MSE)
RMSE

输出:
50729

y_test.describe()

输出:
在这里插入图片描述

测试集的数据中,房价最大值有50万,最小值2万,而模型的误差在5万,这个结果只能说是一般

但是仔细想想,我们才读了三篇文章,就已经几乎能做到一整个拿着高薪的分析师团队耗费大量时间才能做到的事情,这正是机器学习的魅力所在

加州房价篇到此结束,下一个篇章:手写数字识别篇

对应源码(需下载后查看)

对应视频

原文章地址

转载请注明出处

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我们可以使用波士顿房价数据集来训练线性模型。这个数据集包含506个样本,每个样本有13个特征,标签是每个房屋的价格。 我们首先要将数据分为训练集和测试集。这样,我们可以使用训练集来训练模型,然后使用测试集来测试模型的性能。 使用训练训练线性模型的流程如下: 1. 导入所需的库,如NumPy和Scikit-learn。 2. 加载波士顿房价数据集。 3. 分离出训练集和测试集。 4. 创建线性回归模型。 5. 在训练集上训练模型。 6. 使用模型对测试集进行预测。 7. 评估模型的性能。 这样,我们就可以使用训练好的线性模型预测波士顿房价了。 代码示例如下: ``` # 导入所需的库 import numpy as np from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.datasets import load_boston # 加载波士顿房价数据集 X, y = load_boston(return_X_y=True) # 分离出训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 创建线性回归模型 model = LinearRegression() # 在训 ### 回答2: 波士顿房价数据集是一个经典的用于线性回归模型训练预测的数据集。我们可以利用这个数据集来训练一个线性模型,然后使用测试集来评估预测房价情况的能力。 首先,我们将波士顿房价数据集分为训练集和测试集两部分。训练集用于模型训练和参数估计,而测试集用于评估模型在未见过的数据上的表现。 接下来,我们使用训练集对线性模型进行训练。线性模型的目标是找到一个最佳的权重向量,使得模型能够最好地拟合训练集中的数据。这意味着我们要找到一个能够最小化训练集与模型预测之间差异的权重向量。 训练线性模型的过程可以使用梯度下降等优化算法进行。通过调整权重向量的数值,模型逐渐优化自己的预测能力。最终,我们得到了一个在训练集上拟合得较好的线性模型。 接着,我们使用测试集来评估线性模型预测能力。我们将测试集中的输入特征输入到训练好的线性模型中,通过模型预测得到房价预测值。然后,我们将预测值与测试集中真实的房价进行对比,以计算模型预测误差,比如均方误差。 最后,我们通过对模型预测误差进行分析和评估,得出线性模型在给定波士顿房价数据集上的预测能力如何。如果模型在测试集上的预测误差较小,则说明模型能够很好地泛化到未见过的数据上,即有较高的泛化能力。 总结起来,使用波士顿房价训练集对线性模型进行训练,并使用测试集对房价进行预测,是一种常见且有效的方法。这样可以评估线性模型预测能力,并对模型进行性能评估和选择,从而在波士顿房价预测任务中获得较好的结果。 ### 回答3: 波士顿房价数据集是一个非常常用的数据集,用于线性回归模型训练预测。该数据集包含了13个输入特征(如平均房间数、犯罪率等)和一个目标变量,即房价。 首先,我们可以使用波士顿房价数据集来训练一个线性回归模型。将数据集分为训练集和测试集,通常以80%的数据作为训练集,20%的数据作为测试集。 使用训练集来训练线性模型,目标是找到一条最佳拟合直线,使得模型能够最好地预测房价训练过程中,模型会学习到不同特征与房价之间的关系,通过求解最小二乘法的优化问题来确定各特征的权重。 完成模型训练后,我们使用测试集进行预测。将测试集的特征输入到训练得到的模型中,模型会利用权重和特征的线性组合来预测房价。根据预测结果与真实值的差异,我们可以评估模型的性能。 通常,我们可以使用均方误差(Mean Squared Error,MSE)或者均方根误差(Root Mean Squared Error,RMSE)来评估模型预测精度。这些指标越低,说明模型预测越准确。 总结来说,使用波士顿房价数据集对线性模型进行训练预测的过程是:将数据集分为训练集和测试集,使用训练集对线性模型进行训练,通过求解最小二乘法的优化问题确定特征权重,然后利用训练得到的模型对测试集进行预测,最后根据预测结果评估模型的性能。这种方法可以有效地预测波士顿房价情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值