预测华盛顿州金县的房价
华盛顿州金县是华盛顿州人口最多的县。它也是美国第 12 大人口大国。华盛顿人口最多的城市是西雅图。我的目标是根据 2014 年 5 月至 2015 年 5 月期间在美国华盛顿州金县售出的房屋来预测房屋价格,并创建一个模型,供购房者、房屋卖家和在线房地产清单用来确定价格的一个家。
你可以查看我的 G 机会 查看整个项目。
数据整理
这个 是我正在使用的数据。下面是列及其描述和数据类型的列表。
让我们使用 df.info() 来查看数据的信息。
数据清洗
- 数据集中没有重复项。
- 有两行(索引 10 和 17)的“sqft_above”为空值。我刚刚删除了这些行。
异常值
- “卧室”列中有一行有 33。这是一个异常值,我删除了该行。
- 有 13 行的“卧室”列为 0。我把它们过滤掉了。
- 对于“sqft_lot”列,有 5 行的面积大于 75,000 平方英尺。我也过滤掉了这些行。这些房子很可能是农田。
探索性数据分析
绘制区域
**进口** plotly.express **作为** 像素 price_per_sqft **=** df['价格'] **.** 申请(np **.** 日志) **/** df['sqft_lot']
图 **=** 像素 **.** scatter_mapbox(df,纬度 **=** “纬度”,经度 **=** “长”,
颜色 **=** price_per_sqft,
最大尺寸 **=** 15,
飞涨 **=** 10,
mapbox_style **=** 'carto-positron',
标题 **=** “华盛顿州金县房屋每平方英尺的价格”,
color_discrete_sequence **=** [像素 **.** 颜色 **.** 周期性的 **.** 冰火]) 图 **.** 节目()
上图显示了房屋每平方英尺的价格。靠近华盛顿州西雅图的房子,每平方英尺的价格越贵。我用了 情节地 为图表。
价格分布
图,斧头 **=** plt **.** 子图(图大小 **=** (15,10))
斧头 **=** sns **.** 直方图(x **=** “价格”,数据 **=** df,在哪里 **=真** ) **.** 设置(标题 **=** '价格分布')
上图显示了目标变量(价格)的分布。房价有$350,000和$450,000两种模式。
随机森林特征重要性
特征重要性 **=** PD **.** 数据帧(rf **.** 特征重要性,索引 **=**
X_train **.** 列,列 **=** ['重要性'])
**.** sort_values('重要性',升序 **=假** )
_#情节重要性_
特征重要性 **.** 情节(种类 **=** '巴') **.** invert_yaxis()
上图显示了使用随机森林特征重要性的特征重要性。特征重要性图表告诉我们在确定房屋价格时最重要的特征。 “sqft_living”、“grade”、“lat”和“long”是前四个重要特征。 “sqft_living”是决定房屋价格的最重要特征。
SHAP 特征重要性
**进口** 形状
_# 加载 JS 可视化代码到 notebook_
形状 **.** initjs() 解说员 **=** 形状 **.** TreeExplainer(rf)
形状值 **=** 解说员 **.** 形状值(X) _#阴谋_
一世 **=** 4
形状 **.** force_plot(解释器 **.** 预期值,shap_values[i],特征 **=** X **.** iloc[i],特征名称 **=** X **.** 列) _#摘要条形图_
形状 **.** summary_plot(shap_values,特征 **=** X,特征名称 **=** X **.** 列,plot_type **=** “酒吧”,情节大小 **=** (2.0, 5.0))
SHAP Feature Importance
上图显示了基于 SHAP 的特征重要性。 SHAP 基于特征属性的大小。基于 SHAP 特征重要性,“sqft_living”、“grade”、“long”、“sqft_living15”是前 4 个特征。随机森林特征重要性和 SHAP 特征重要性具有相似的前 4 个重要特征。
我们将看看 EDA 的这四大功能。
主要功能
图,斧头 **=** plt **.** 子图(图大小 **=** (10,5))
斧头 **=** sns **.** 散点图(x **=** “sqft_living”,是的 **=** “价格”,色调 **=** “价格”,
数据 **=** df,调色板 **=** '岩浆') **.** 放(
标题 **=** '价格与 sqft_living')
上图显示了“price”和“sqft_living”之间的关系。通常,房子的面积越大,价格就越高。最昂贵的房子有12,000平方英尺。大多数房屋的面积在 2,000 到 6,000 平方英尺之间。
图,ax = plt.subplots(figsize=(12,7)) ax = sns.boxplot(x="grade", y="price", data=df,
调色板='岩浆').set(标题='价格与等级')
上图显示了“价格”和“等级”之间的关系。成绩基于金县的评分系统。如果你有更好的成绩,你应该期待更高的房价。通常情况下,档次越高的房子房价越高。
图,ax = plt.subplots(figsize=(15,5)) ax = sns.scatterplot(x="lat", y="price", hue='price',
数据=df,调色板='岩浆').set(标题='价格与纬度')
上图显示了“价格”和纬度(“纬度”)之间的关系。华盛顿州西雅图的纬度为 47.608013。房子离西雅图越近,房价可能越高。价格较高的房屋位于纬度 47.5 到 47.7 之间。
图,斧头 **=** plt **.** 子图(图大小 **=** (15,5))
斧头 **=** sns **.** 散点图(x **=** “长”,y **=** “价格”,色调 **=** '价格',数据 **=** df,
调色板 **=** '岩浆') **.** 设置(标题 **=** '价格与长期')
上图显示了“价格”和经度(“长”)之间的关系。华盛顿州西雅图的经度为 -122.335167。房子的经度越靠近西雅图,它的房价就有可能更高。价格较高的房屋位于经度 -122.4 和 -122.2 之间。
预处理和训练
我测试了三种不同的基本模型以确定最佳模型。我选择线性回归是因为它显示了 2 个变量之间的关系,岭回归是因为它是一种有助于过度拟合的 L2 正则化,而随机森林回归是因为它使用集成学习方法进行回归,从而比单个模型做出更准确的预测。
基于 GridScarchCV 中的“最佳参数”列来确定每个模型的最佳参数。
随机森林回归器基于 RMSE(均方根误差)表现最好。
均方根误差是均方误差的平方根。 RMSE 用于通过显示预测与测量的真实值相差多远来评估预测的质量。
平均绝对百分比误差 (MAPE) 用于衡量预测准确性。 MAPE 是百分比误差的平均值
造型
我想看看我是否可以改进模型,所以我创建了四个具有不同自变量的不同随机森林模型。
所有模型的参数如下:
- 最大深度=30
- max_features=’自动’
- n_estimators=400
模型概述
- ‘Rf_model’ 是具有原始自变量的模型。
- “rf_model2”没有基于随机森林特征重要性的无关紧要的变量。
- “rf_model3”是基于随机森林特征重要性的顶级特征。
- “rf_model4”是基于 SHAP 特征重要性的顶级特征。
“rf_model”是基于所有指标表现最好的模型。
残差图
上图是“rf_model”的残差图。残差图显示了观测值和预测值之间的预测误差。该图还表明我们的数据存在过度拟合。改善过拟合的一种方法是收集更多数据。
结论
面积、等级、纬度和经度是决定房屋价格的四大重要因素。最佳模型的平均绝对百分比误差为 13%,但仍需要一些改进。根据“rf_model”的残差图,表明存在过拟合。下一步是纠正过拟合。纠正过度拟合的一种方法是获取更多关于已售房屋的数据。希望在进行这些改进后,此模型可用于购房者/卖方或在线房产列表。
完整的代码 Github .
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/18556/23110609
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/287889.html