sklearn模型中random

mac2025-04-02  5

sklearn模型中random_state参数的意义

random_state意义使用情况


random_state

意义

例如:在sklearn可以随机分割训练集和测试集(交叉验证),只需要在代码中引入model_selection.train_test_split就可以了:

from sklearn import model_selection

x_train, x_test, y_train,y_test=model_selection.train_test_split(x,y,test_size=0.2,random_state=0)

这里的random_state就是为了保证程序每次运行都分割一样的训练集和测试集。否则,同样的算法模型在不同的训练集和测试集上的效果不一样。

链接:参考链接

random.randint(1,100) 没有设置 random seed 每次取得结果不同,他的随机数种子与当前系统时间有关

random seed(123)每次运行结果一致 如果你在需要设置随机数种子的地方都设置好,那么当别人重新运行你的代码的时候就能得到完全一样的结果,复现和你一样的过程。


使用情况

三种情况: 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后,每次构建的模型是相同的、生成的数据集是相同的、每次的拆分结果也是相同的。

总结:对于那些本质上是随机的过程,我们有必要控制随机的状态,这样才能重复的展现相同的结果。 如果,对随机状态不加控制,那么实验的结果就无法固定,而是随机的显现。

参考链接链接

最新回复(0)