對random state引數的理解

2021-09-30 19:45:13 字數 1410 閱讀 7458

在學習機器學習的過程中,常常遇到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後,每次構建的模型是相同的、生成的資料集是相同的、每次的拆分結果也是相同的。

總結:對於那些本質上是隨機的過程,我們有必要控制隨機的狀態,這樣才能重複的展現相同的結果。

如果,對隨機狀態不加控制,那麼實驗的結果就無法固定,而是隨機的顯現。

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

比喻的說一下,也不知道準不準確。

乙個容器中放置一定量的沙子,每次用手去抓沙子的時候,抓取的結果會受到抓取的力度、乙隻手抓還是兩隻手抓、手是幹的或溼的等諸多因素的影響(將影響因素定為a=)。

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

來看看 random state 這個引數

svc random state 0 裡有引數 random state from imblearn.over sampling import smote smote random state 42 裡有引數 random state上面乙個是svd演算法,乙個是處理不平衡資料的smote演算法,我...

Git的hard soft mixed引數對比

首先要清楚在本地,git會分三個區 工作區 暫存區 本地庫。當使用去做版本移動的時候,那麼在使用 hard mixed soft 是不一樣的。git reset soft abcdef僅僅是把本地庫的指標移動了,而暫存區和你本地的 是沒有做任何改變的。但是這個時候你上次提交到本地庫的 狀態是綠色的,...

centos對核心引數的修改

在centos中 sysctl a 顯示當前系統中可用的核心引數 linux修改核心引數有三種方式 1 修改 etc sysctl.conf 檔案,加入配置選項,格式為 key value 修改儲存後呼叫 sysctl p 載入新配置 此種方式在系統重新啟動時不會丟失 2 使用sysctl命令臨時修...