データ分割¶
元のデータセットをトレーニングデータ(学習用のデータ)とテストデータ(性能評価用のデータ)に分割することです。
トレーニングデータ: モデルを学習させるためのデータ
テストデータ: 学習済みのモデルが、正しく分類、回帰できるかを評価するためのデータ
データセットの全てを使って学習(トレーニング)して、同じデータでテストをしては意味がありません。 テストの答えを元に分類器が学習してしまうので、不用意にスコアが高くなってしまうからです。
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割をテスト用のデータとして置いておけます