私はpythonを初めて使用します。スプリットトレインとテストセットでランダム状態をゼロに設定する理由を誰にも教えてください。
X_train, X_test, y_train, y_test = \
train_test_split(X, y, test_size=0.30, random_state=0)
ランダム状態が1に設定されているこのような状況を見てきました!
X_train, X_test, y_train, y_test = \
train_test_split(X, y, test_size=0.30, random_state=1)
クロス検証でもこのランダムな状態の結果は何ですか?
Random_stateが0でも1でも、その他の整数でも構いません。重要なのは、コードの複数の実行にわたって処理を検証する場合、同じ値を設定する必要があるということです。ちなみに、私はrandom_state=42
がscikitの多くの公式例や他の場所でも使用されているのを見てきました。
random_state
は、名前が示すように、内部乱数ジェネレーターを初期化するために使用されます。これは、データをトレインインデックスとテストインデックスに分割することを決定します。 ドキュメント には、次のように記載されています:
Random_stateがNoneまたはnp.randomの場合、ランダムに初期化されたRandomStateオブジェクトが返されます。
Random_stateが整数の場合、新しいRandomStateオブジェクトのシードに使用されます。
Random_stateがRandomStateオブジェクトの場合、それはパススルーされます。
これは、コードを複数回実行するときにデータを確認および検証するためです。 random_state
を固定値に設定すると、コードを実行するたびに同じ乱数列が生成されることが保証されます。また、プロセスに他のランダム性が存在しない限り、生成される結果は常に同じです。これは、出力の検証に役立ちます。
Random_stateは、ランダムに選択されたデータを分割しますが、ひねりが加えられています。ひねりは、random_stateの特定の値に対してデータの順序が同じになるということです。これは、boolの値ではないことを理解する必要があります。 0から任意の整数noまで、random_stateとして渡すと、永続的な順序になります。例:random_state=0
で取得する順序は同じままです。その後、random_state=5
を実行し、再びrandom_state=0
に戻ると、同じ順序になります。そして、すべての整数の0のように同じになります。 random_state=None
は毎回ランダムに分割されます。
まだ疑問がある場合 this
コードでrandom_stateに言及しない場合、コードを実行するたびに新しいランダム値が生成され、トレインデータセットとテストデータセットは毎回異なる値になります。
ただし、結果が同じになるたびにrandom_state(random_state = 1またはその他の値)に特定の値を使用する場合、つまり、トレインデータセットとテストデータセットで同じ値を使用します。
各エポック後のトレーニングデータセットの初期シャッフルの再現性のためにrandom_stateパラメーターを使用しました。