ML前のデータ前処理系の学習メモ
主に学習できた点
特徴量をどう見極めて行くかという一つの手法を学んだ
題材にしたデータ
House Prices: Advanced Regression Techniques | Kaggle
kaggleのstarterがとっつきやすそうなdatasetがあるやつを選んだ
自分はローカルで動かして理解したいので、データセットが小さめだと学習しやすくてありがたい
さっそくやっていく
可視化
まずは、どういったデータが揃っているのかということを見極めることからはじめていくわけですが、pandas-profilingというものを使うとあっという間に可視化してくれる
とても長くなっているのでファーストビューの所だけをcapった
でも
pandas-profilingだけだといっぱい色々ありすぎて正直ビギナーにはわからない。学習のためにも自分で色々といじって可視化してみよう思った
先人たちのkernelを参考にした
このkagglerのkernelのコード Blend&Stack LR&GB = [0.10649] {House Prices} v57 | Kaggle で下記の部分に注目した
1
train['YrBltAndRemod'] = train['YearBuilt'] + train['YearRemodAdd'] train['TotalSF'] = train['TotalBsmtSF'] + train['1stFlrSF'] + train['2ndFlrSF'] train['Total_sqr_footage'] = (train['BsmtFinSF1'] + train['BsmtFinSF2'] + train['1stFlrSF'] + train['2ndFlrSF']) train['Total_Bathrooms'] = (train['FullBath'] + (0.5 * train['HalfBath']) + train['BsmtFullBath'] + (0.5 * train['BsmtHalfBath'])) train['Total_porch_sf'] = (train['OpenPorchSF'] + train['3SsnPorch'] + train['EnclosedPorch'] + train['ScreenPorch'] + train['WoodDeckSF'])
与えられた学習データには存在しない項目を作り出している点がなるほどって思った。
2
train = train[train.GrLivArea < 4500] train.reset_index(drop=True, inplace=True)
外れ値と思われるデータをdropしてしまう
自分で可視化した結果
相関マトリックスを作ってみた
# correlation matrix corrmat = train.corr() plt.figure(figsize=(15, 11)) k = 15 #number of variables for heatmap cols = corrmat.nlargest(k, 'SalePrice')['SalePrice'].index cm = np.corrcoef(train[cols].values.T) sns.set(font_scale=1.25) sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', yticklabels=cols.values, xticklabels=cols.values, cmap='Blues') plt.savefig('./heatmap.jpg')
⇩
こうして眺めてみるとSalePriceに相関関係が高いのがTotalSF
,OverallQual
,Total_sqr_footage
,GrLivArea
とわかるのかな
さいご
- 今回はここまでにしましたが、これらの相関関係の高いデータを特徴量として実際に学習モデルに食わせていって予測を導き出すのかなという大まかな流れを理解できた
- これだけでは精度が上がらないのはわかっているが、ひとまずは理解が進んだということで🍺