机器学习实践之各种回归算法的房价预测对比(实验)

举报
菜鸟级攻城狮 发表于 2021/06/19 11:34:08 2021/06/19
【摘要】 机器学习实践之各种回归算法的房价预测对比(实验)

机器学习实践之各种回归算法的房价预测对比

1.实验目的

1)强化对回归问题的理解

2)掌握回归算法的应用

2.实验要求

1)样本数据分析与处理

https://www.kaggle.com/harlfoxem/housesalesprediction?select=kc_house_data.csv下载后,对样本数据进行分析。该实验是依据房屋的属性信息,包括房屋的卧室数量,卫生间数量,房屋的大小,房屋地下室的大小,房屋的外观,房屋的评分,房屋的修建时间,房屋的翻修时间,房屋的位置信息等,对房屋的价格进行预测。

  • 下载实验数据
  • 初步分析数据
  • 对特征进行归一化
  • 划分训练集和测试集
  • 初步的建模结果
  • 通过检验特征之前的相关性,通过特征工程中特征选择的方法,判断特征间的相关性以及特征和标签之间的相关性。(对比初始结果)

2)回归算法建模及分析

运用决策树(DecisionTreeRegressor)、随机森林(RandomForestRegressor)、KNN(KNeighborsRegressor)三种回归算法对数据进行建模,对模型参数进行画学习曲线或者网格搜索的调优方法,选择最好的模型参数。

3)实验结果部分(交叉验证)

  • 三个模型效果对比:用均方误差和 R 方值作为评价指标。

三个模型效率对比:运行时间作为评价指标

4.实验方法和步骤(含设计)

1. 获取数据并查看数据结构,导入相关的库,并利用read.csv从本地读取csv格式数据集

2. 初步分析数据,查看数据集的具体信息

从图中可以看出整个数据集有21613个样本, 21个特征,单看维度虽然不算太高,但是样本数量比较多。过拟合的情况可能存在。依据房屋的属性信息:房价,卧室数,洗浴室数,使用面积,建筑面积,楼层等信息对房屋进行预测,得出相应的缺失值,date的数据类型为 object,不能直接作为特征数据带入模型进行处理,需要进行特征编码。

可以看到所有的特征列都不存在空值,所以不用对空值进行处理,接下来减少不必要的特征列就行

将date特征列画分成年和月两个特征,然后删除原data列

从矩阵中我们可以看到有些数据的相关性较高,有些数据的相关性很低,保留相关性较高的数据,作为新的特征,包括:bedrooms  bathrooms sqft_living  floors waterfront view grade sqft_above  sqft_basement  lat  sqft_living15  house_age

3. 划分训练集和测试集,利用StandardScaler进行数据归一化,按列名提取标签和特征矩阵,分别将特征矩阵命名为x,标签命名为y

查看分好的训练集和测试集

4. 建立初始模型:建立决策树算法得出的相应的初始模型

5. 建立初始模型:建立随机森林的初始模型

6. 使用KNN算法得出相应的准确率

7. 将特征进行方差过滤,并得出相应的结果

8.调整决策树算法,随机森林算法模型进行调参

调整决策树算法的max_depth参数,画出对应的学习曲线

查看相应的模型复杂度和模型效果,从图中可以看到当max_depth=10时,模型准确率最高

 

9. 调整随机森林算法的 n_estimators 参数,画出对应学习曲线,在确定好的范围内,进一步细化学习曲线

10. 通过学习曲线调参方法, n_neighbors=20 时,准确率最高

调参之后准确率上升很小,这说明k近邻分类(k-nearest neighbor classification)算法对这类数据准确率判断不是很高

 

11. 调整KNN算法的n_neighbors参数,画出对应的学习曲线, 运用K-Neareat Neighbors Regression(KNN)对数据进行建模,对模型参数进行画学习曲线和网格搜索优化,选择最好的模型参数

K-近邻算法是一种非常直观并且容易理解和实现的有监督分类算法。该算法的基本思想是寻找与待分类的样本在特征空间中距离最近的K个以标记样本,以这些样本的标记为参考,通过投票等方式,将占比最高的类别标记付给待标记的样本。随着K取值的不同,会获得不同的分类结果。

 

5.实验结果

 

 

得出相应KNN运算时间,随机森林运算时间和决策树运算时间

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。