【轉】對random_state參數的理解


轉自:https://blog.csdn.net/az9996/article/details/86616668


 

 

在學習機器學習的過程中,常常遇到random_state這個參數,下面來簡單敘述一下它的作用。
作用:控制隨機狀態。

原因:為什么需要用到這樣一個參數random_state(隨機狀態)?

在此先簡單羅列三種情況:
1、在構建模型時:

forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)

2、在生成數據集時:

X, y = make_moons(n_samples=100, noise=0.25, random_state=3)

3、在拆分數據集為訓練集、測試集時:

X_train, X_test, y_train, y_test = train_test_split(
cancer.data, cancer.target, stratify=cancer.target, random_state=42)

如果不設置random_state的話會怎樣?
例如1中,每次構建的模型是不同的。
例如2中,每次生成的數據集是不同的。
例如3中,每次拆分出的訓練集、測試集是不同的。

之所以會這樣,是因為模型的構建、數據集的生成、數據集的拆分都是一個隨機的過程。

如果你希望結果可以重現,固定random_state是非常重要的。

對於隨機森林這個模型,它本質上是隨機的,設置不同的隨機狀態(或者不設置random_state參數)可以徹底改變構建的模型。
對於數據集的生成,它本質上也是隨機的,設置不同的隨機狀態(或者不設置random_state參數)可以徹底改變生成的數據集。
對於數據集的拆分,它本質上也是隨機的,設置不同的隨機狀態(或者不設置random_state參數)可以徹底改變拆分的結果。

固定random_state后,每次構建的模型是相同的、生成的數據集是相同的、每次的拆分結果也是相同的。

總結:對於那些本質上是隨機的過程,我們有必要控制隨機的狀態,這樣才能重復的展現相同的結果。
如果,對隨機狀態不加控制,那么實驗的結果就無法固定,而是隨機的顯現。

修改(2019年3月9日17:44:06)

比喻的說一下,也不知道准不准確。
一個容器中放置一定量的沙子,每次用手去抓沙子的時候,抓取的結果會受到抓取的力度、一只手抓還是兩只手抓、手是干的或濕的等諸多因素的影響(將影響因素定為A={a,b,c,d,e,f,……})。

固定random_state后,每次抓取沙子時的影響因素將被固定為具體的某一組,這樣每次抓取的沙子就具有了相同的狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM