web-dev-qa-db-ja.com

sklearn.model_selection.train_test_splitの例の「ランダムな状態」とは何ですか?

私は機械学習に本当に慣れていないので、sklearnの例をいくつか試してみました

誰かが以下の例で本当に「ランダムな状態」が何を意味するかを私に説明できますか

import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.arange(10).reshape((5, 2)), range(5)
X

list(y)


X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=42) 

X_train

y_train

X_test

y_test

なぜ42にハードコードされているのですか?

7
Saurabh

それは明白ではありませんか? 42は 生命、宇宙、およびすべての究極の質問に対する答え です。

深刻なことに、random_stateはシードをランダムジェネレーターに設定するだけなので、トレーニングテストの分割は常に確定的です。シードを設定しない場合、毎回異なります。

関連ドキュメント

random_stateintRandomStateインスタンスまたはNone、オプション(デフォルト= None
_intの場合、random_stateは乱数ジェネレーターが使用するシードです。 RandomStateインスタンスの場合、random_stateは乱数ジェネレーターです。 Noneの場合、乱数ジェネレータはnp.randomが使用するRandomStateインスタンスです。

13
cs95

ランダムな状態では、生成した分割を確実に再現できます。 Scikit-learnはランダムな順列を使用して分割を生成します。指定したランダムな状態は、乱数ジェネレーターのシードとして使用されます。これにより、乱数が同じ順序で生成されます。

6
vumaasha

コードでrandom_stateを指定しない場合、コードを実行(実行)するたびに新しいランダムな値が生成され、トレーニングデータセットとテストデータセットは毎回異なる値になります。

ただし、random_state = 0または1または42またはその他の整数のように固定値が割り当てられている場合、コードを実行する回数に関係なく、結果は同じになります。つまり、トレーニングデータセットとテストデータセットの値は同じになります。

2
Farzana Khan

コードでRandom_stateが定義されていない場合、実行ごとにトレインデータが変化し、実行ごとに精度が変わる可能性があります。 Random_state = "constant integer"が定義されている場合、トレインデータは実行ごとに一定になるため、デバッグが容易になります。

0
kishore naidu