2017-02-12 63 views
4

我對python很陌生。誰能告訴我爲什麼我們在分裂列車和測試集中設置隨機狀態爲零。分裂數據集中的Python隨機狀態

X_train, X_test, y_train, y_test = \ 
    train_test_split(X, y, test_size=0.30, random_state=0) 

我已經看到這樣的情況,其中隨機狀態設置爲一個!

X_train, X_test, y_train, y_test = \ 
    train_test_split(X, y, test_size=0.30, random_state=1) 

這個隨機狀態在交叉驗證中的結果是什麼?

+0

'train_test_split'從哪裏來? –

+0

@Scott Hunter它來自sklearn.cross_validation。但隨機狀態爲零和一對火車和測試分裂的影響是什麼? – Shelly

+1

'train_test_split'的文檔是怎麼說的? –

回答

7

如果random_state是0或1或任何其他整數,則無關緊要。重要的是,如果你想通過多次代碼驗證你的處理,它應該被設置爲相同的值。順便說一句,我看到random_state=42用於scikit的許多官方示例以及其他地方。

random_state顧名思義,用於初始化內部隨機數發生器,它將決定數據在您的情況下分解爲列車和測試索引。在documentation中聲明:

如果random_state是None或np.random,則返回一個隨機初始化的RandomState對象。

如果random_state是一個整數,那麼它將用於播種一個新的RandomState對象。

如果random_state是一個RandomState對象,那麼它將被傳遞。

這是在多次運行代碼時檢查並驗證數據。設置random_state固定值將保證每次運行代碼時都會生成相同的隨機數序列。除非過程中存在其他隨機性,否則所產生的結果將與往常一樣。這有助於驗證輸出。