背景介绍:
这个比赛总的情况就是给你79个特征然后根据这些预测房价(SalePrice),难点在于特征很多,且存在大量的缺失值。kaggle提供的data_description.txt这个文件,里面对各个特征的含义进行了描述,对处理缺失值有很大的帮助
一、认识数据
House Price 数据集分为train和test数据。训练集含有1460个样本,80个属性,一个标签(SalePrice)。测试集很有1459个样本,80个属性。sample_submission则是最终上传到kaggle的预测结果。
二、EDA
首先导入包,探索一下测试集的情况。
属性的意义
* MSSubClass:建筑类
* mszoning:一般的分区分类
* LotFrontage:街道连接属性线性英尺
* LotArea:平方英尺批量
* 街道:道路通行方式
* 小巷:通道入口的类型
* LotShape:财产的形状
* LandContour:财产的平整度
* 实用程序:可用的实用程序类型
* LotConfig:很多配置
* LandSlope:坡的财产
* 邻近:Ames市区范围内的物理位置
* 状态:邻近主要道路或铁路
* 条件:靠近主要道路或铁路(如果第二存在)
* BldgType:住宅类型
* housestyle:风格的住宅
* overallqual:整体材料和完成质量
* overallcond:总体状况评价
* yearbuilt:原施工日期
* yearremodadd:重塑日期
* RoofStyle:屋顶类型
* RoofMatl:屋面材料
* exterior1st:外部覆盖的房子
* exterior2nd:外部覆盖的房子(如果有一个以上的材料)
* MasVnrType:砌体饰面型
* masvnrarea:砌体饰面面积平方英尺
* exterqual:外部材料质量
* extercond:在外部的物质条件
* 基金会:基金会的类型
* BsmtQual:地下室的高度
* bsmtcond:地下室的一般条件
* BsmtExposure:罢工或花园层地下室墙
* bsmtfintype1:质量基底成品区
* bsmtfinsf1:型完成1平方英尺
* bsmtfintype2:质量第二成品区(如果有的话)
* bsmtfinsf2:型完成2平方英尺
* BsmtUnfSF:未完成的平方英尺的地下室
* totalbsmtsf:地下室面积总平方英尺
* 加热:加热类型
* heatingqc:加热质量和条件
* 中央:中央空调
* 电气:电气系统
* 1stflrsf:一楼平方英尺
* 2ndflrsf:二楼平方英尺
* lowqualfinsf:完成平方英尺Low质量(各楼层)
* grlivarea:以上等级(地)居住面积平方英尺
* BsmtFullBath: Basement full bathrooms
* BsmtHalfBath:地下室半浴室
* FullBath:完整的浴室级以上
* HalfBath:半浴室级以上
* 卧室:高于地下室的卧室数
* 厨房:厨房数量
* kitchenqual:厨房的品质
* totrmsabvgrd:房间总级以上(不包括卫生间)
* 功能:家庭功能评级
* 一些壁炉壁炉:
* fireplacequ:壁炉质量
* GarageType:车库位置
* GarageYrBlt:建立年车库
* GarageFinish:车库的室内装修
* GarageCars:在汽车车库大小的能力
* GarageArea:在平方英尺的车库规模
* GarageQual:车库质量
* garagecond:车库条件
* paveddrive:铺的车道
* WoodDeckSF:平方英尺的木甲板面积
* openporchsf:平方英尺打开阳台的面积
* enclosedporch:封闭式阳台的面积以平方英尺
* 3ssnporch:平方英尺三季阳台的面积
* screenporch:平方英尺纱窗门廊区
* PoolArea:在平方英尺的游泳池
* poolqc:池质量
* 栅栏:栅栏的质量
* miscfeature:杂项功能在其他类未包括
* miscval:$杂特征值
* MoSold:月销售
* YrSold:年销售
* SaleType:销售类型
* salecondition:销售条件
目标值Saleprice 房价的情况。
房价是否满足正态分布
看起来有些右偏,右边有长尾,等下再做处理。
居住面积与房价的关系
地下室面积与房价的关系
材料饰面质量与房价的关系
年份与房价关系
看看相关性,哪些和价格最相关
三、数据清洗
首先把测试集和训练集读进来
首先来处理之前的离群点
现在分布看上去正常多了
首先观察下saleprice的分布
观察分布图和qq图明显看出有些右偏,需要去处理。
我们选用对数变换来处理。log(1+x)
可以看出仅做了个对数变化,分布变得符合了正态分布。
去掉ID和目标
观察缺失值情况
处理缺失值
缺失值就大致被处理好了。
四、特征工程
有些特征并不是连续值,来把他做成类别值
观察发现utilities这个值基本没用
接下里用labelencoder进行标签映射
检查特征的偏度
有些偏度还挺大的
用box-cox变换来处理,参考资料选取0.15为经验值
最后进行one-hot 编码
五、建模对比
评价指标是均方根误差(RMSE)
这里选用robustscaler来级联起来先处理
中间用gridsearch测试出了参数取值
用stacking模型
选取ENet,Gboost,KRR作为第一层模型,lasso作为第二层模型。
做成上交的格式
排名在前15%左右,后续再慢慢改进。
网友评论