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, random_state=0,
)

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

それを避けるために、 train_test_split 関数を使ってデータを分割しています。 train_test_split 関数はデータをランダムに、好きの割合で分割できる便利な関数です。

  • X_train: トレーニング用の特徴行列(「アルコール度数」「密度」「クエン酸」などのデータ)
  • X_test: テスト用の特徴行列
  • y_train: トレーニング用の目的変数(「美味しいワイン」か「そうでもないワインか」)
  • y_test: テスト用の目的変数

train_test_split には以下のような引数を与えます。

  • 第一引数: 特徴行列 X
  • 第二引数: 目的変数 y
  • test_size=: テスト用のデータを何割の大きさにするか
    • test_size=0.3 で、3割をテスト用のデータとして置いておけます
  • random_state=: データを分割する際の乱数のシード値
    • 同じ結果が返るように 0 を指定していますが、これは勉強用であり普段は指定しません