scikit learn で機械学習アルゴリズムを実装したいのですが、このパラメータが何をrandom_state
するのか理解できません。なぜこれを使用する必要があるのでしょうか?
また、疑似乱数とは何なのかも理解できませんでした。
ベストアンサー1
train_test_split
配列または行列をランダムなトレーニング サブセットとテスト サブセットに分割します。つまり、 を指定せずに実行するたびにrandom_state
異なる結果が得られますが、これは想定された動作です。例:
実行 1:
>>> a, b = np.arange(10).reshape((5, 2)), range(5)
>>> train_test_split(a, b)
[array([[6, 7],
[8, 9],
[4, 5]]),
array([[2, 3],
[0, 1]]), [3, 4, 2], [1, 0]]
実行2
>>> train_test_split(a, b)
[array([[8, 9],
[4, 5],
[0, 1]]),
array([[6, 7],
[2, 3]]), [4, 2, 0], [3, 1]]
変化します。一方random_state=some_number
、 を使用すると、 の出力が保証されます。実行 1の出力に等しくなります実行2つまり、分割は常に同じになります。実際の数字が 42、0、21 など何であっても問題ありませんrandom_state
。重要なのは、42 を使用するたびに、最初に分割したときに常に同じ出力が得られることです。これは、たとえばドキュメントで再現可能な結果が必要な場合に便利です。これにより、例を実行するときに全員が一貫して同じ数字を見ることができます。実際には、テストrandom_state
中は を固定数に設定し、ランダムな (固定ではない) 分割が本当に必要な場合は実稼働環境で を削除する必要があります。
2番目の質問に関してですが、疑似乱数ジェネレーターは、ほぼ完全にランダムな数値を生成する数値ジェネレーターです。なぜそれらが完全にランダムではないのかは、この質問の範囲外であり、おそらくあなたの場合は問題にならないでしょう。ここより詳しい情報を入力してください。