この方法は、以下のデータがsklearnメソッドに設定しています:
KFold、GroupKFold、StratifiedKFold、LeaveOneGroupOut、LeavePGroupsOut、LeaveOneOut、LeavePOut、ShuffleSplit、GroupShuffleSplit、StratifiedShuffleSplit、PredefinedSplit、TimeSeriesSplit、
①--K倍交差検証法にデータセット:KFold、GroupKFold、StratifiedKFold、
- k個の互いに素なサブセットに全体のトレーニングセットSは、Sは、それらが各m / k個の訓練例、S {それぞれのサブセット有し、トレーニング例の数がm個であると仮定される。1、S 2、...、S K }
- 各サブセットから内部テストセットとして実行良い点、K-1の他のトレーニングセット
- K-1のトレーニングセットで訓練学習モデル
- モデルは分類モデルとして、テストセットに分類の平均値を配置またはレートの真の関数と仮定されます
この方法は、そのサンプルを最大限に活用し、より多くの複雑な計算、k回を訓練する必要がある、k個の試験時間
KFold:
NPとしてインポートnumpyの #KFold sklearn.model_selectionインポートKFoldから X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[ 11,12]) Y = np.array([1,2,3,4,5,6]) KF = KFold(n_splits = 2)#分成几个组 kf.get_n_splits(X) プリント(KF)
train_indexため、kf.split(X)でtest_index:
プリント( "トレインランキング:"、train_index、 "テストランキング:"、test_index)
X_train、X_test = X [train_index]、Xは[test_index]
= Y [y_train、y_test train_index]、Y [test_index]
#print(X_train、X_test、y_train、y_test)
#KFold(n_splits = 2、random_state =なし、シャッフル=偽)#Trainランキング:[3 4 5]、テストインデックス:[0 1 2] #Trainランキング:[0 1 2]、試験ランキング:[3 4 5 ]
GroupKFold:
NPとしてインポートnumpyの sklearn.model_selectionインポートからGroupKFold X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[11]、[ 12]) 、Y = np.array([1,2,3,4,5,6]) 基= np.array([1,2,3,4,5,6]) group_kfold = GroupKFold(n_splits = 2) group_kfold.get_n_splits(X、Y、基) プリント(group_kfold) group_kfold.splitでtrain_index、test_index(X、Y、グループ)のために: プリント( "列車ランキング:"、train_index、 "テストランキング:"、test_index ) X_train、X_test = X [train_index]、X [test_index] y_train、y_test = Y [train_index]、Y [test_index] #print(X_train、X_test、y_train、y_test) #GroupKFold(n_splits = 2) #Trainランキング:[ 0 2 4]、試験ランキング:[1 3 5] #Trainランキング:[1 3 5]試験ランキング:[0 2 4]
StratifiedKFold:トレーニングセットの各タイプの割合が同じであることを確実にします
NPとしてインポートnumpyの sklearn.model_selectionインポートからStratifiedKFold X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[11]、[ 12]) 、Y = np.array([1,1,1,2,2,2]) SKF = StratifiedKFold(n_splits = 3) skf.get_n_splits(X、Y) の印刷(SKF) train_indexため、SKFにtest_index .split(X、Y): プリント( "トレインランキング:"、train_index、 "テストランキング:"、test_index) X_train、X_test = X [train_index]、Xは[test_index] y_train、y_test = Y [train_index]、Y 【test_index] #print(X_train、X_test、y_train、y_test)
#StratifiedKFold(n_splits = 3、random_state =なし、シャッフル=偽)
#Trainランキング:[1 2 3 4 5]、テストインデックス[3:0]
#Trainインデックス[0 2 3 5]試験ランキング:[1~4]
#Trainランキング:[0 1 3 4]、試験ランキング:[2~5]
②方式に設定されたデータ - 方法休暇:LeaveOneGroupOut、LeavePGroupsOut、LeaveOneOut、LeavePOut、
- リーブ・ワン認証(リーブワンアウト、LOO)が:N個のサンプルがあると仮定し、試験試料として、各サンプル、訓練サンプルのような他のN-1個のサンプルが得られたN分類、N試験結果、モデルの性能を測定するためのN個の結果の平均値
- LOOがK倍CVと比較した場合、代わりにkのN個のモデルのN個のサンプルに基づいてLOO、さらに、N-1モデルのN個のサンプルの上で訓練されるそれらの各々はなく、( - K- 1)* N / K。両方の方法において、kが大きく、K << Nではないと仮定すると、LOOよりK倍CVより加工します
- P左認証方式(脱退-P-OUT):Nサンプル、試験片Pとして、各サンプルがあるが、訓練サンプルとしてNP他のサンプルが得られた列車試験対を、およびLeaveOneOut KFold、Pとは異なりP = 1、それはリーブオンになったときに場合> 1、テスト・セットは、重複します
leaveOneOut:残すように設定し、テスト
NPとしてインポートnumpyの sklearn.model_selectionインポートからLeaveOneOut X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[11]、[ 12]) 、Y = np.array([1,2,3,4,5,6]) LOO = LeaveOneOut() loo.get_n_splits(X) プリント(LOO) train_indexため、loo.splitにtest_index(X、 Y): プリント( "列車ランキング:"、train_index、 "テストランキング:"、test_index) X_train、X_test = X [train_index]、X [test_index] y_train、y_test = Y [train_index]、yは[test_index] #print (X_train、X_test、y_train、y_test)
#LeaveOneOut()
#Trainランキング:[1 2 3 4 5]、テストインデックス:[0]
#Trainランキング:[0 1 2 3 4 5]、試験ランキング:[1]
#列車インデックス:[0 1 3 4 5]、試験ランキング:[2]
#Trainランキング:[0 1 2 3 4 5]、試験ランキング:[3]
#Trainインデックス:[0 1 2 3 5]試験ランキング:[4]
#Trainランキング:[0 1 2 3 4]、試験ランキング:[5
LeavePOut:P・テスト・セットを残します
NPとしてインポートnumpyの sklearn.model_selectionインポートからLeavePOut X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[11]、[ 12]) 、Y = np.array([1,2,3,4,5,6]) LPO = LeavePOut(P = 3) lpo.get_n_splits(X) プリント(LPO) train_indexため、lpo.splitでtest_index (X、Y): プリント( "トレインランキング:"、train_index、 "テストランキング:"、test_index) X_train、X_test = X [train_index]、Xは[test_index] y_train、y_test = Y [train_index]、Y [test_index ] #print(X_train、X_test、y_train、y_test) #LeavePOut(P = 3) #Trainランキング:[3 4 5]、テストインデックス:[0 1 2] #Trainランキング:[2 4 5]、テストランキング: [0 1 3] #Trainランキング:[2 3 5]、テストインデックス:[0 1 4] #Trainランキング:[2 3 4]、テストインデックス:[0 1 5] #Trainランキング:[1 4 5]、テストインデックス:[0 2 3] #Trainランキング:[0 1 3]、試験ランキング:[2 4 5] #Trainランキング:[1 3 5]試験ランキング:[0 2 4] #Trainランキング:[1 3 4]、テストインデックス:[0 2 5] #Trainランキング:[1 2 5]試験ランキング:[ 0 3 4] #Trainランキング:[1 2 4]、テストインデックス[3:0 5] #Trainランキング:[1 2 3]、テストインデックス:[0 4] #Trainランキング:[0 4]試験ランキング:[1 2 3] #Trainランキング[3:0 5]、試験ランキング:[1 2 4] #Trainランキング:[0 3 4]、試験ランキング:[1 2 5] #Trainランキング:[0 2 5]、試験ランキング:[1 3 4] #Trainランキング:[0 2 4]、試験ランキング:[1 3 5] #Trainランキング:[0 2 3]、試験ランキング:[1 4 5] #Trainインデックス:[0 1 5]、テスト度:[2 3 4] #Train度:[0 1 4]、テスト度:[2 3 5] #Train度:[0 1 2]、テストインデックス:[3 4 5]
③メソッドデータにセット - ランダム分割方法:ShuffleSplit、GroupShuffleSplit、StratifiedShuffleSplit
- ShuffleSplit反復子は、指定された製造独立の数すべての破壊の最初のランダムなサンプルにセット列車/試験データを、その後の情報は、結果を計算することができるように、乱数シードrandom_stateデジタル・シーケンス発生器を制御するために使用される列車/試験に分かれ再度表示され
- ShuffleSplitは、より良い代替KFlodクロスバリデーションで、より優れた彼は許さのサンプルの反復比例制御や電車/テスト
- 変異体のStratifiedShuffleSplitとShuffleSplitする部門を作成する場合、つまり、階層分割を返す全体のデータセットと、各クラス内の元のサンプルの割合の割合と分割は一貫確保
注文のうち#ShuffleSplitデータセットは、その後、ランダムに設定トレーニングセットとテストの量のトレーニングセットとテストセット分周比は、トレーニングセットとテストセットの比率を選択し、1未満であってもよいです
NPとしてインポートnumpyの sklearn.model_selectionインポートからShuffleSplit X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[11]、[ 12]) 、Y = np.array([1,2,3,4,5,6]) RS = ShuffleSplit(n_splits = 3、test_size = 0.25、random_state = 0) rs.get_n_splits(X) の印刷(RS ) train_index、test_index rs.splitにおける(X、Y)の場合: プリント( "列車ランキング:"、train_index、 "テストランキング:"、test_index) X_train、X_test = X [train_index]、X [test_index] y_train、y_test = Y [train_index]、Y [test_index] #print(X_train、X_test、y_train、y_test) プリント(「========================== ==== ") RS = ShuffleSplit(n_splits = 3、train_size = 0.5、test_size = 0.25、random_state = 0) rs.get_n_splits(X) プリント(RS) train_indexため、rs.splitにtest_index(X、Y): プリント( "トレインランキング:"、train_index、 "テストランキング:"、test_index)
#ShuffleSplit(n_splits = 3、random_state = 0、test_size = 0.25、train_size =なし)
#Trainランキング:[1 3 0 4]、試験ランキング:[5 2]
#Trainランキング:[4 0 2 5]、試験ランキング:[1~3]
#Trainランキング:[1 2 4 0]、テストインデックス:[3~5]
#==============================
#ShuffleSplit(n_splits = 3、random_state = 0、test_size = 0.25、train_size = 0.5)
#Trainランキング:[1 3 0]、試験ランキング:[5 2]
#Trainランキング:[4 0 2]、試験ランキング:[1~3]
#Trainランキング:[1 2 4]試験ランキング:[3~5]
注文のうち#StratifiedShuffleSplitShuffleSplitデータセットを、その後、テストセットとトレーニングセット、トレーニングセットの量やトレーニングおよび試験セットの無作為に選択された割合のテストセットの比率を分割し、1未満とすることができるだけでなく、トレーニングセットのすべてのタイプを確保します割合は同じです
NPとしてインポートnumpyの sklearn.model_selectionインポートからStratifiedShuffleSplit X = np.array([1,2]、[3,4]、[5,6]、[7,8]、[9,10]、[11]、[ 12]) 、Y = np.array([1,2,1,2,1,2]) SSS = StratifiedShuffleSplit(n_splits = 3、test_size = 0.5、random_state = 0) sss.get_n_splits(X、Y) の印刷(SSS) sss.splitでtrain_index、test_index(X、Y)の場合: プリント( "トレインランキング:"、train_index、 "テストランキング:"、test_index) X_train、X_test = X [train_index]、X [test_index] y_train 、y_test = Y [train_index]、Y [test_index] #print(X_train、X_test、y_train、y_test) #StratifiedShuffleSplit(n_splits = 3、random_state = 0、test_size = 0.5、train_size =なし) #Trainランキング:[5 4 1 ]、試験ランキング:[3 2 0] #Trainランキング:[5 2 3]、テストインデックス:[0 4 1] #Trainランキング:[5 0 4]、試験ランキング:[3 1 2]