お題
有名なお題であるkaggleの「House Price」問題にみんなでチャレンジしていくことになったハンズオンの内容をメモしていく企画の第5回。解説というよりはメモのまとめだったりもしますが、どこかの誰かのためになれば幸いです。そろそろ終りが見えてきたと思いたい。
- 元々のお題:https://www.kaggle.com/c/house-prices-advanced-regression-techniques
- 参考にした記事:https://yolo-kiyoshi.com/2018/12/17/post-1003/
本日の作業
カテゴリカル変数のダミー化
文字列とかを数値に置き換えをして行く感じですかね。
# カテゴリカル変数の特徴量をリスト化
cat_cols = alldata.dtypes[alldata.dtypes=='object'].index.tolist()
# 数値変数の特徴量をリスト化
num_cols = alldata.dtypes[alldata.dtypes!='object'].index.tolist()
# データ分割および提出時に必要なカラムをリスト化
other_cols = ['Id','WhatIsData']
# 余計な要素をリストから削除
cat_cols.remove('WhatIsData') #学習データ・テストデータ区別フラグ除去
num_cols.remove('Id') #Id削除
# カテゴリカル変数をダミー化
alldata_cat = pd.get_dummies(alldata[cat_cols])
# データ統合
all_data = pd.concat([alldata[other_cols],alldata[num_cols],alldata_cat],axis=1)
カテゴリカル変数の特徴量をリスト化
- .dtypes:これ第3回でやりました。データ型を検出するやつだ。
- .index:これは第4回でやりました。該当する配列のindexだけ抜き出してくれるやつ。
- .tolist():これも第4回出やりました。indexで抽出されたやつを配列にしてくれるやつ。
おお、積み重なっているじゃないか、自分。という謎の手応え。では以下の結果だけまとめて出力してみたいと思います。object型のデータ型のやつだけ、indexを一覧でとってきていますね。
cat_cols = alldata.dtypes[alldata.dtypes=='object'].index.tolist()
数値変数の特徴量をリスト化
num_cols = alldata.dtypes[alldata.dtypes!='object'].index.tolist()
これはカテゴリカル変数の特徴量をリスト化するのと同じなので割愛。
データ分割および提出時に必要なカラムをリスト化
other_cols = ['Id','WhatIsData']
これは見たまんま、第2回のときに追加したカラムを配列に格納していますね。どうやらこの次のステップで余計な要素をリストから削除するのに使う様子。
余計な要素をリストから削除
いらない要素をリストから削除するのだそうです。cat_cols
の中にはWhatIsDataという項目があったことを先程の出力結果からも確認できます。
cat_cols.remove('WhatIsData') #学習データ・テストデータ区別フラグ除去
num_cols.remove('Id') #Id削除
- .remove():使い方的には見たまんま。該当項目を削除する。
- .remove()参考:https://www.javadrive.jp/python/list/index8.html
カテゴリカル変数をダミー化
alldata_cat = pd.get_dummies(alldata[cat_cols])
- .get_dummies:見たまんま、与えられた列の値をダミー化してくれる。
- .get_dummies参考:https://note.nkmk.me/python-pandas-get-dummies/
珍しく所感。関数に当て込むだけで勝手に全部やってくれるなんてなんて便利なやつだ…pythonのこういうところ好き。
alldata_cat = pd.get_dummies(alldata[cat_cols])
の出力結果。すごい、ほんとに変わってる。
データ統合
all_data = pd.concat([alldata[other_cols],alldata[num_cols],alldata_cat],axis=1)
これは見たまんまですね。[alldata[other_cols], alldata[num_cols], alldata_catをconcatとで合体。(見たまんまとか偉そうにいってしまうまでになりました)
おしまい。
今回はテンポよく進めたかと。存外読み解きに時間がかからなくなっている様子。地道にやってなれてきている感じですかね。引き続き精進します。
データの整形が終わったので次からいよいよ分析ですね。楽しみですね。