2017-02-12 9 views
4

私はPythonにはまったく新しいものです。誰も私がなぜ列車とテストセットを分割するにはランダムな状態をゼロに設定するか教えてください。分割データセットの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) 

また、クロスバリデーションでのこのランダムな状態の結果はどうですか?

+0

'train_test_split 'はどこから来たのですか? –

+0

@Scott Hunterそれはsklearn.cross_validationから来ます。しかし、無作為の状態が0と1の効果が列車とテストの分割に及ぼす影響は何ですか? – Shelly

+1

'train_test_split'のドキュメントは何を表していますか? –

答えて

7

random_stateが0か1か他の整数であるかどうかは関係ありません。問題は、コードの複数の実行にわたって処理を検証する場合は、同じ値に設定する必要があることです。ところで、私はrandom_state=42がscikitの多くの公式の例と他の場所でも使われているのを見てきました。

random_stateという名前で示されているように、内部乱数ジェネレータを初期化するために使用されます。内部乱数ジェネレータは、あなたの場合の列車とテストインデックスへのデータの分割を決定します。 random_stateがNoneまたはnp.randomされていない場合は、ランダムに初期化RandomStateオブジェクトが返され

documentationでは、と述べられています。

random_stateが整数の場合、新しいRandomStateオブジェクトをシードするために使用されます。

random_stateがRandomStateオブジェクトの場合、それはパススルーされます。

これは、コードを複数回実行するときにデータをチェックし、検証するためのものです。 random_stateを固定値に設定すると、コードを実行するたびに乱数の同じシーケンスが生成されます。また、プロセスに他のランダム性がない限り、結果は常に同じになります。これは、出力の検証に役立ちます。

関連する問題