1-簡介
random_state 相當於隨機數種子random.seed() 。random_state 與 random seed 作用是相同的。可參考:https://www.jianshu.com/p/4deb2cb2502f
對模型沒有影響,但是對於一些進行隨機選擇的過程有影響。比如隨機拆分訓練集和測試集。隨機種子一致的時候能保證每次結果的一致性
random_state--- 如果你在需要設置隨機數種子的地方都設置好,那么當別人重新運行你的代碼的時候就能得到完全一樣的結果,復現和你一樣的過程。
2-原理(轉載自https://blog.csdn.net/Perfect_Accepted/article/details/81151952)
我們在使用sklearn的train_test_split函數隨機划分數據集生成training set 於test set時,在函數train_test_split中有一個參數為random_state。
random_state:隨機數種子——其實就是該組隨機數的編號,在需要重復試驗的時候,保證得到一組一樣的隨機數。比如每次都為1,其他參數一樣的情況下你得到的隨機數組是一樣的。當為None時,產生的隨機數組也會是隨機的。
隨機數的產生取決於種子,隨機數和種子之間的關系遵從以下兩個規則:種子不同,產生不同的隨機數;種子相同,即使實例不同也產生相同的隨機數。
下面我們通俗的解釋一下就是:
參數test_size:如果是浮點數,在0-1之間,表示test set的樣本占比;如果是整數的話就表示test set樣本數量。
test_size只是確定training set於test set的各自所占比例或者數量,並沒有確定數據的划分規則。比如我們有數據集[1,2,3,4,5,6,7,8,9],我們確定test_size=3,那問題是我們應該取哪三個數作為test set呢,這時候就應該使用random_state來確定我們的划分規則,假設我們取random_state=1,它按一定的規則去取出我們的數據,當我們random_state=2時,它又換成另一種規則去取我們的數據,random_state的取值范圍為0-2^32。當random_state=None時,可以理解為隨機分配一個整數給random_state,這樣就導致每次運行的結果都可能不同。
3-疑問
00-random_state=數值,內部是否封裝了一個算法,算法是?
01-random_state的取值范圍為為什么是0-2^32?
4-待做
查看random_state源碼