【初心者向けハンズオン】kaggleの「住宅価格を予測する」を1行ずつ読み解く（第7回：予測モデルの構築の準備）

# お題
* [第1回の内容はこちら](https://qiita.com/WdknWdkn/items/a7f5e4a2cc492676e12a)
* [第2回の内容はこちら](https://qiita.com/WdknWdkn/items/95eccfae1aac99babe7a)
* [第3回の内容はこちら](https://qiita.com/WdknWdkn/items/54ee2cdc56d85d5e795c)
* [第4回の内容はこちら](https://qiita.com/WdknWdkn/items/b3ec4606d533770e5eb5)
* [第5回の内容はこちら](https://qiita.com/WdknWdkn/items/17aa03188f728b6b563e)
* [第6回の内容はこちら](https://qiita.com/WdknWdkn/items/55a62c602f896cf9aedb)

　有名なお題であるkaggleの「House Price」問題にみんなでチャレンジしていくことになったハンズオンの内容をメモしていく企画の第7回。解説というよりはメモのまとめだったりもしますが、どこかの誰かのためになれば幸いです。前回で準備がおわり、いよいよ解析段階に。

* 元々のお題：https://www.kaggle.com/c/house-prices-advanced-regression-techniques
* 参考にした記事：https://yolo-kiyoshi.com/2018/12/17/post-1003/

# 本日の作業

## 予測モデルの構築

```
# マージデータを学習データとテストデータに分割
train_ = all_data[all_data['WhatIsData']=='Train'].drop(['WhatIsData','Id'], axis=1).reset_index(drop=True)
test_ = all_data[all_data['WhatIsData']=='Test'].drop(['WhatIsData','SalePrice'], axis=1).reset_index(drop=True)
# 学習データ内の分割
train_x = train_.drop('SalePrice',axis=1)
train_y = np.log(train_['SalePrice'])
# テストデータ内の分割
test_id = test_['Id']
test_data = test_.drop('Id',axis=1)
```

### マージデータを学習データとテストデータに分割

trainの方で確認します。

```
all_data[all_data['WhatIsData']=='Train'].drop(['WhatIsData','Id'], axis=1).reset_index(drop=True)
```

まずは`all_data[all_data['WhatIsData']=='Train']`の中身を確認。all_data内のTrainだけをとってくるわけです。
<img width="525" alt="スクリーンショット 2020-07-06 11.55.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215128/b2daa25d-c6e0-4627-dde0-2211f78b4f7b.png">

`all_data[all_data['WhatIsData']=='Train'].drop(['WhatIsData','Id'], axis=1)`の中身確認WhatIsData, Idを列から落とす。
<img width="584" alt="スクリーンショット 2020-07-06 11.56.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215128/9d8997d9-07b4-a29e-1b73-184e108737d3.png">

`all_data[all_data['WhatIsData']=='Train'].drop(['WhatIsData','Id'], axis=1)`の中身確認。indexをリセット（キャプチャ画像だと一切替わって見えねえ…）
<img width="641" alt="スクリーンショット 2020-07-06 12.00.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215128/2282d445-d693-93f8-d25d-5fc42929ec58.png">

（ちなみに、trainもtestも、以前配列をわざわざ作ったような。。。そこらへんの全体像をもっかいおさらいする必要があるなと思いました）

### 学習データ内の分割

```
train_x = train_.drop('SalePrice',axis=1)
train_y = np.log(train_['SalePrice'])
```

`train_x = train_.drop('SalePrice',axis=1)`で、SalePrice以外のカラムを説明変数にするわけですね。

`train_y = np.log(train_['SalePrice'])`で、目的変数を用意。（前回の対数変換をお忘れなく）

### テストデータ内の分割

```
test_id = test_['Id']
test_data = test_.drop('Id',axis=1)
```

もはや見たままか。。。流石にここはtest_id, test_dataそれぞれの確認は省略します。

## 予測モデルの構築

に、入ろうと思ったんですが、いかんせんわからないことがもりもりになってきたので、入らずに準備に徹します。主に単語調べ。

### `StandardScaler()  #スケーリング`

* スケール変換について：https://aizine.ai/preprocessing0614/
* Scikit-learnのスケール変換クラスについて：https://helve-python.hatenablog.jp/entry/scikitlearn-scale-conversion

### `[0.001, 0.01, 0.1, 1.0, 10.0,100.0,1000.0] #パラメータグリッド`

* グリッドサーチについて：https://www.case-k.jp/entry/2018/09/03/211016#:~:text=%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%82%B5%E3%83%BC%E3%83%81%E3%81%A8%E3%81%AF%E3%80%81%E3%83%A2%E3%83%87%E3%83%AB,%E3%82%92%E6%8E%A2%E7%B4%A2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%A7%E3%81%99%E3%80%82

### `make_pipeline(scaler, ls) #パイプライン生成`

* パイプラインについて：https://qiita.com/colako/items/b4f4159b77c0a87e978f

# おしまい。

この宿題をまずは全部読み込みをするところからか。
思ったこと言っていいですかね。「そろそろ終盤」とか思ってましたが、ここまでやってたこと全部前処理だったという。