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
の機能だと思います。
私のばかげた質問:数の変更はサンプルの変更にどのように影響しますか? パンダのドキュメント と ナンピーのドキュメント を読みましたが、明確な画像を取得できませんでした。
例を挙げた簡単な説明は大歓迎です。
_pandas.DataFrame.sample
_ のドキュメントで説明されているように、_random_state
_パラメーターは整数(あなたの場合のように)または _numpy.random.RandomState
_ のいずれかを受け入れます。 、メルセンヌツイスター疑似乱数ジェネレーターのコンテナーです。
整数を渡すと、これを疑似乱数ジェネレーターの シード として使用します。名前がすでに言っているように、ジェネレータは真のランダム性を生成しません。シードに基づいて初期化される内部状態(np.random.get_state()
を呼び出すことで取得できます)があります。同じシードによって初期化されると、同じ「乱数」のシーケンスが再現されます。
RandomStateを渡すと、この(すでに初期化/シードされている)RandomStateを使用して疑似乱数が生成されます。これにより、RandomStateを初期化するときに固定シードを設定し、このRandomStateを渡すことで、再現性のある結果を得ることができます。実際には、numpysの内部RandomStateのシードを設定するよりもこれを優先する必要があります。これで説明されている理由 answer RobertKernとそれに対するコメント。アイデアは、numpysの内部RandomStateのシードを変更することにより、プログラムの他の部分が再現性を台無しにするのを防ぐ独立したストリームを持つことです。