kaggle入門之 房價預測

背景介紹:
這個比賽總的情況就是給你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%左右,后續再慢慢改進。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容