Python Machine Learning Ch4

by mmyoji

2 min read

前回 の続き

第4章 データ前処理

前回勉強会で「この本微妙じゃね?」と雲行きが怪しくなってきており、この章次第では終了になる可能性が出てきた。

4.1 欠測データへの対処

欠測値 missing value ... データ収集過程で誤りがあったり、空欄になってしまっているような値

pandas 使えば NaN とか null の個数を列ごとに調べたりできる

対処方法

  1. 欠測値を含む特徴量(列) or サンプル(行) を取り除く
    • データが少なくなりすぎる問題
  2. 欠測値を補完する(補間法
    • 平均値補完 mean imputation: 列の平均値で埋める

4.2 カテゴリデータの処理

名義 (nominal) 特徴量, 順序 (ordinal) 特徴量 といったカテゴリデータ

名義特徴量 ... e.g.) 服の色

順序特徴量 ... e.g.) 服のサイズ (XL > L > M > S)

こういった数値データではない特徴量をそのまま学習アルゴリズムに適用することはできないので、なんらかの数値データに変換する必要がある

またクラスラベルも数値データであることを期待されるので変換する必要がある

名義ラベルを単に数値に変換すると、 sklearn のアルゴリズムは大小関係があると勘違いしてしまうので、 one-hot encoding を用いる

sklearn.preprocessing.OneHotEncoder や、 pandas.get_dummies を用いる(後者の方が便利)

カテゴリデータの欠測値はどうする???

4.3 データセットをトレーニングデータセットとテストデータセットに分割する

sklearn.model_selection.train_test_split を使う

4.4 特徴量の尺度を揃える

決定木、ランダムフォレストを使う場合は必要ないが、ほとんどのアルゴリズムでは特徴量のスケーリングをした方が性能が良くなるので、やれ。

正規化 normalization ... 特徴量を [0,1] の範囲にスケーリングし直す

標準化 standarization ... 平均値 0, 標準偏差 1 になるように変換。外れ値から受ける影響を少なくできる

4.5 有益な特徴量の選択

4.6 ランダムフォレストで特徴量の重要度にアクセスする

おわり

これで終わりかな...