2017-07-20 11 views
2

私はこれはサンプルデータフレームdf_sを生成パンダrandom_statePandas random_stateはどうしますか?

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

を使用し、次のコードを持っています。 randomStateと同じコードを実行するたびに、私は同じサンプルdf_sを取得します。値を123から12に変更すると、サンプルも同様に変更されますので、random_stateの動作は同じです。

私の愚かな疑問:番号の変更はサンプルの変更にどのように影響しますか? Pandas documentationNumpy documentationを読みましたが、明確な画像が得られませんでした。

例を使って簡単に説明していただければ幸いです。

+3

https://stackoverflow.com/q/21494489/2285236 – ayhan

答えて

1

pandas.DataFrame.sampleの文書に記載されているように、random_stateパラメータはメルセンヌツイスターの擬似乱数発生器のための容器である(あなたのケースのように)整数またはnumpy.random.RandomState、のいずれかを受け付けます。

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

これをRandomStateに渡すと、この(既に初期化され/シードされている)RandomStateを使用して疑似乱数が生成されます。これにより、RandomStateの初期化時に固定のシードを設定し、このRandomStateを渡して再現可能な結果を​​得ることもできます。実際には、numPysの内部RandomStateの種を設定するよりも、これを好むべきです。この理由は、Robert Kernとそのコメントによるこのanswerで説明されています。このアイデアは、プログラムの他の部分が内部RandomStateの数値の種を変更することによって再現性を乱すのを防ぐ独立したストリームを持つことです。

関連する問題