機械学習:モデル評価とsklearn実現(一)留置法
4211 ワード
一、紹介
残留法(hold-out):データを直接3つの反発部分、すなわち訓練セット、テストセット、検証セットに分割します.訓練セットでモデルを訓練し,試験セットでモデルを選択し,最後に試験セットで汎化誤差を評価した.データセットの分割は、分類タスクで少なくともサンプルのカテゴリスケールを類似に保つなど、データ分布の一貫性をできるだけ維持します.この場合、階層サンプリングを使用できます.
二、方法sklearn.model_selection.train_test_split(*arrays,**options)
浮動小数点数:0.0~1.0で、元のデータセットに対するテストセットの割合を表します.
整数:テストセットのサイズを表します.
None:テストセットのサイズを表します.元のデータセットのサイズからトレーニングセットのサイズを減算します.トレーニングセットのサイズもNoneと指定した場合test_sizeを0.25に設定
三、サンプルコード
データの生成
from sklearn.model_selection import train_test_split
import numpy as np
X = np.random.rand(8,4)
y = [1,1,0,0,1,1,0,0]
X
array([[ 0.57182586, 0.34344789, 0.62648921, 0.08838991],
[ 0.23236396, 0.45493656, 0.12884294, 0.68522353],
[ 0.19012725, 0.78536539, 0.66665145, 0.33146112],
[ 0.56584231, 0.32945912, 0.22809843, 0.79332783],
[ 0.9836845 , 0.82029146, 0.12332923, 0.93058032],
[ 0.01305442, 0.35052673, 0.40793758, 0.95430386],
[ 0.81467068, 0.8397317 , 0.11915037, 0.00317844],
[ 0.01244749, 0.24385553, 0.77887998, 0.33716389]])
分割する
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.4,random_state=0)
print("X_train=",X_train)
print("X_test=",X_test)
print("y_train=",y_train)
print("y_test=",y_test)
X_train= [[ 0.56584231 0.32945912 0.22809843 0.79332783]
[ 0.57182586 0.34344789 0.62648921 0.08838991]
[ 0.01305442 0.35052673 0.40793758 0.95430386]
[ 0.9836845 0.82029146 0.12332923 0.93058032]]
X_test= [[ 0.81467068 0.8397317 0.11915037 0.00317844]
[ 0.19012725 0.78536539 0.66665145 0.33146112]
[ 0.23236396 0.45493656 0.12884294 0.68522353]
[ 0.01244749 0.24385553 0.77887998 0.33716389]]
y_train= [0, 1, 1, 1]
y_test= [0, 0, 1, 0]
階層サンプリング
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.4,random_state=0,stratify=y)
print("X_train=",X_train)
print("X_test=",X_test)
print("y_train=",y_train)
print("y_test=",y_test)
X_train= [[ 0.9836845 0.82029146 0.12332923 0.93058032]
[ 0.81467068 0.8397317 0.11915037 0.00317844]
[ 0.57182586 0.34344789 0.62648921 0.08838991]
[ 0.01244749 0.24385553 0.77887998 0.33716389]]
X_test= [[ 0.19012725 0.78536539 0.66665145 0.33146112]
[ 0.56584231 0.32945912 0.22809843 0.79332783]
[ 0.23236396 0.45493656 0.12884294 0.68522353]
[ 0.01305442 0.35052673 0.40793758 0.95430386]]
y_train= [1, 0, 1, 0]
y_test= [0, 0, 1, 1]