机器学习实践之各种回归算法的房价预测对比(实验)
机器学习实践之各种回归算法的房价预测对比
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运算时间,随机森林运算时间和决策树运算时间
|
- 点赞
- 收藏
- 关注作者
评论(0)