データ分割

元のデータセットをトレーニングデータ(学習用のデータ)とテストデータ(性能評価用のデータ)に分割することです。

  • トレーニングデータ: モデルを学習させるためのデータ

  • テストデータ: 学習済みのモデルが、正しく分類、回帰できるかを評価するためのデータ

データセットの全てを使って学習(トレーニング)して、同じデータでテストをしては意味がありません。 テストの答えを元に分類器が学習してしまうので、不用意にスコアが高くなってしまうからです。

train_test_split

scikit-learnの train_test_split を使えばデータの分割が簡単にできます。

データセットから特徴行列 X とクラスラベル y に分割したものを、 以下のようにしてトレーニングデータとテストデータに分割できます。

# データをトレーニング用、評価用に分割

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

train_test_split 関数はデータをランダムに、好きの割合で分割できる便利な関数です。

  • X_train: トレーニング用の特徴行列(「アルコール度数」「密度」「クエン酸」などのデータ)

  • X_test: テスト用の特徴行列

  • y_train: トレーニング用の目的変数(「美味しいワイン」か「そうでもないワインか」)

  • y_test: テスト用の目的変数

また、 test_size を指定してテストデータの大きさを指定できます。

  • test_size=: テスト用のデータを何割の大きさにするか

    • test_size=0.3 で、3割をテスト用のデータとして置いておけます