2016-08-29 1 views
0

script.pyと呼ばれ、私はプログラムを持っているとしますスクリプトを再実行するとrandom_stateが維持されますか?

import pandas as pd 
import numpy as np 
from sklearn.cross_validation import train_test_split 

if __name__ == "__main__": 
    df = pd.DataFrame({"x": [1,2,3,4,5,6,6,5,6,3], "y": [1,1,0,0,0,0,1,0,0,1]}) 

    train, test = train_test_split(df, test_size = 0.20, random_state = 100) 

私はかつて私のコマンドラインからこのスクリプトを実行する場合:

H:\>python script.py 

は、どのように私は(以降の実行でtraintestデータフレームことを確認することができますすなわち、私がscript.pyを再度実行したとき)は、以前の反復のデータフレームのtraintestと同じですか?私はrandom_stateが動作していないことを知っていますが、明日戻ってPCの電源を入れなおしてscript.pyを再実行すれば、traintestセットの同等性は維持されますか?

異なる機械学習アルゴリズムの精度をテストしています。これらはすべて異なるスクリプトに保存されています。そのため、電車とテストセットがスクリプト全体で同一であることを確認したいのです。

+0

同じ形状のDataFrameの場合、同じ分割が返されます。あなたはあなたの例でそれを試すことができます。私はテストデータセットにインデックス7と6を持っています。あなたは同じものを持っているべきです。 – ayhan

答えて

1

ランダムな状態コードを実行するときの無関係な操作方法。ランダムな状態を指定するという全体のコンセプトは、同じコードを使用してこのコードを実行するたびに、が全く同じ結果を持つことです。したがって、df、test_sizeおよびrandom_stateを変更しない限り、この関数は何日経過しても常に同じ値を返します。ただし、基になるライブラリを更新すると変更される可能性があります。

+0

それで、スクリプトを実行する時間を除いて、すべてを一定に保つと、 'random_state'に同じ値を使用すると、同じ分割が得られますか? 'random_state = 100'を指定すると、別のスクリプトと同じようにdfを分割する必要があるという点で、Pythonは全く同じデータフレームを使って別のスクリプトでどのように知っていますか? – blacksite

+0

これは内部的には、df分割は乱数生成器を使用しているため、random_stateが**確定的な関数**であるためです。したがって、種を設定するときにランダム性はありません。これは、ビット操作を含む通常の関数ですが、完全に確定的な方法です。これは、私たちが実際にCSに乱数を持っていない理由でもあります。私たちは**疑似**乱数しか持っていません。 – lejlot

関連する問題