9

ここには、train_test_split ( Stratified Train/Test-split in scikit-learn ) を介して scikit で階層化されたトレーニング/テスト分割を行う方法の説明と、 np.split を介してランダムなトレーニング/検証/テスト分割を行う方法の説明 ( Howデータを 3 つのセット (トレーニング、検証、テスト) に分割するには? )。しかし、層化されたトレーニング/検証/テスト分割を行うことはどうですか。

階層化された (クラス ラベルでの) トレーニング/検証/テスト分割を実行するために頭に浮かぶ最も近い概算は次のとおりですが、1 回の関数呼び出しまたはより正確な方法でこれを達成できるより良い方法があると思います。

60/20/20 のトレーニング/検証/テストの分割を行いたいとしましょう。次に、私の現在のアプローチは、最初に 60/40 の成層分割を行い、次にその最初の 40 に対して 50/50 の層分割を行い、最終的に60/20/20 層別分割。

from sklearn.cross_validation import train_test_split
SEED = 2000
x_train, x_validation_and_test, y_train, y_validation_and_test = train_test_split(x, y, test_size=.4, random_state=SEED)
x_validation, x_test, y_validation, y_test = train_test_split(x_validation_and_test, y_validation_and_test, test_size=.5, random_state=SEED)

私のアプローチが正しい場合、および/またはより良いアプローチがある場合は、戻ってきてください。

ありがとうございました

4

2 に答える 2

2

はい、これはまさに私が行う方法です-2train_test_split()回実行します。最初はトレーニング セットを分割するものと考えてください。その後、そのトレーニング セットさまざまなフォールドまたはホールドアウトに分割される可能性があります。

実際、組み込みの相互検証を含む scikit モデルを使用してモデルをテストすることになった場合、明示的にtrain_test_split()再実行する必要さえないかもしれません。(非常に便利な!)model_selection.cross_val_score関数を使用する場合も同様です。

于 2018-09-04T20:53:45.963 に答える