機械学習を学んでみたのでそのまとめ①前処理


 Udemyで【世界で74万人が受講】基礎から理解し、Pythonで実装!機械学習26のアルゴリズムを理論と実践を通じてマスターしようを受講したので、その内容をまとめます。

前処理

まず機械学習とはざっくり言うと、機械学習のモデルに対して何らかのデータを与えると何らかの出力を得るものなので、データに不備があると正しい出力を得ることができなくなってしまう。そこで機械学習のモデルに与える正しいデータに加工することを前処理といいます。

独立変数と従属変数

 ここでもまたざっくり言うと機械学習モデルに対して入力するデータを独立変数と出力されるデータを従属変数と言います。
 独立変数のことを説明変数、従属変数のことを目的変数とも言います。(というか、そっちの方がよく使われている気がする。)

欠損値の処理

 データの中に抜け落ちているものがあると正しく処理できないので、対処する必要があります。対応方法としては以下の2つになります。
・抜けているデータのある列を列ごと削除する。(削除するとデータそのものが無くなってしまうので、あまり良くない。目安として削除できるのは全体の1%未満。)
・抜けているデータをなんらかの値(平均値、中央値、最頻値など)で補完する。

skleanを使った欠損処理(平均値補完)

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(df)
df = imputer.transform(df)

独立変数と従属変数のエンコーディング

数値以外のデータはOne-hot encodingやBinary Encodingを用いて機械学習で計算できるように変換する。

訓練用データセットとテスト用データセットの分割

データセットは訓練用データセットとテスト用データセットに分割して機械学習モデルで使用する。
訓練用データセットで機械学習モデルを作成し、テスト用データセットで作成した機械学習モデルが妥当であるか検証する。

独立変数(X)と従属変数(y)を訓練用独立変数(X_train)、テスト用独立変数(X_test)、訓練用従属変数(y_train)、テスト用従属変数(y_test)に分割

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

フューチャースケーリング(標準化)

フューチャースケーリング(標準化)とは尺度の違うデータを標準正規分布のスケーリングし直すことで、同じ尺度に変換し、機械学習モデルの認識する重要性の違いを取り除く処理になります。
StandardScalerを使うことで、平均:0、標準偏差:1のデータに変換することができる。

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
y_train = sc.fit_transform(y_train)