データセットの全てを使って学習テストをしては意味がない
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 を指定、これは勉強用であり普段は指定しない
1 2 3 4 5 |
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,#Xとyには既にデータセットが代入されている ) |
その他の分割方法
①学習データとターゲットデータがきれいに分割されている場合
1 2 3 |
from sklearn.model_selection importtrain_test_split X_train,X_test,y_train,y_test = train_test_split( iris_dataset["data"],iris_dataset["target"],random_state=0) |
②データフレームに複数のカラムがあり、そのうち一つのカラムをターゲットにする場合
1 2 3 4 5 |
train_X = df.drop('Survived', axis=1)#ターゲット変数以外を学習データとしてtrain_Xへ train_y = df.Survived #ターゲット変数のカラムのみをtrain_yへ #更にtrain_X, train_yをtest_X,test_yに7:3で分割する (train_X, test_X ,train_y, test_y) = train_test_split(train_X, train_y, test_size = 0.3, random_state = 666) |
コメントを残す