1. ホーム
  2. python

[解決済み] Scikit learnのランダムステート(疑似乱数)

2022-03-12 18:23:34

質問

scikit learnで機械学習アルゴリズムを実装したいのですが、このパラメータが何なのかがわかりません。 random_state をご覧ください。なぜそれを使う必要があるのでしょうか?

また、疑似乱数とは何かということも理解できませんでした。

どのように解決するのですか?

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 つまり、スプリットは常に同じになります。 実際の random_state は、42, 0, 21, ...です。重要なのは、42 を使うたびに、最初に分割を行ったときと同じ出力が得られるということです。 これは、例えばドキュメントなどで再現性のある結果を得たい場合に有効で、例を実行したときに誰もが一貫して同じ数字を見ることができるようになります。 実際のところ、私は random_state を固定値に設定し、本当にランダムな (固定値ではない) 分割が必要な場合は、実稼働時にこれを削除します。

2つ目の質問ですが、擬似乱数発生器とは、ほぼ本当に乱数を発生させる数値発生器のことです。なぜ本当の乱数ではないのかは、この質問の範囲外であり、おそらくあなたのケースでは重要ではないでしょう。 こちら を作成します。