web-dev-qa-db-ja.com

Pandas random_stateは正確に何をしますか?

Pandas random_state を使用する次のコードがあります

randomState = 123
sampleSize = 750
df = pd.read_csv(filePath, delim_whitespace=True)
df_s = df.sample(n=sampleSize, random_state=randomState)

これにより、サンプルデータフレームdf_sが生成されます。同じrandomStateでコードを実行するたびに、同じサンプルdf_sを取得します。値を123から12に変更すると、サンプルも変更されるので、それがrandom_stateの機能だと思います。

私のばかげた質問:数の変更はサンプルの変更にどのように影響しますか? パンダのドキュメントナンピーのドキュメント を読みましたが、明確な画像を取得できませんでした。

例を挙げた簡単な説明は大歓迎です。

6
Newskooler

_pandas.DataFrame.sample_ のドキュメントで説明されているように、_random_state_パラメーターは整数(あなたの場合のように)または _numpy.random.RandomState_ のいずれかを受け入れます。 、メルセンヌツイスター疑似乱数ジェネレーターのコンテナーです。

整数を渡すと、これを疑似乱数ジェネレーターの シード として使用します。名前がすでに言っているように、ジェネレータは真のランダム性を生成しません。シードに基づいて初期化される内部状態(np.random.get_state()を呼び出すことで取得できます)があります。同じシードによって初期化されると、同じ「乱数」のシーケンスが再現されます。

RandomStateを渡すと、この(すでに初期化/シードされている)RandomStateを使用して疑似乱数が生成されます。これにより、RandomStateを初期化するときに固定シードを設定し、このRandomStateを渡すことで、再現性のある結果を得ることができます。実際には、numpysの内部RandomStateのシードを設定するよりもこれを優先する必要があります。これで説明されている理由 answer RobertKernとそれに対するコメント。アイデアは、numpysの内部RandomStateのシードを変更することにより、プログラムの他の部分が再現性を台無しにするのを防ぐ独立したストリームを持つことです。

3
jotasi