關於python中的隨機種子——random_state


random_state是一個隨機種子,是在任意帶有隨機性的類或函數里作為參數來控制隨機模式。當random_state取某一個值時,也就確定了一種規則。

random_state可以用於很多函數,我比較熟悉的是用於以下三個地方:1、訓練集測試集的划分 2、構建決策樹 3、構建隨機森林

1、划分訓練集和測試集的類train_test_split

  隨機數種子控制每次划分訓練集和測試集的模式,其取值不變時划分得到的結果一模一樣,其值改變時,划分得到的結果不同。若不設置此參數,則函數會自動選擇一種隨機模式,得到的結果也就不同。

2、構建決策樹的函數

clf = tree.DecisionTreeClassifier(criterion="entropy",random_state=30,splitter="random")

  其取值不變時,用相同的訓練集建樹得到的結果一模一樣,對測試集的預測結果也是一樣的;

  其值改變時,得到的結果不同;

  若不設置此參數,則函數會自動選擇一種隨機模式,每次得到的結果也就不同。

3、構建隨機森林

clf = RandomForestClassifier(random_state=0)

  其取值不變時,用相同的訓練集建森林得到的結果一模一樣,對測試集的預測結果也是一樣的;

  其值改變時,建森林得到的結果不同;

  若不設置此參數,則函數會自動選擇一種隨機模式,每次得到的結果也就不同。

總結:在需要設置random_state的地方給其賦一個值,當多次運行此段代碼能夠得到完全一樣的結果,別人運行此代碼也可以復現你的過程。若不設置此參數則會隨機選擇一個種子,執行結果也會因此而不同了。雖然可以對random_state進行調參,但是調參后在訓練集上表現好的模型未必在陌生訓練集上表現好,所以一般會隨便選取一個random_state的值作為參數。

 


免責聲明!

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



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