【转】对random_state参数的理解

摘要:
如果你希望结果可以重现,固定random_state是非常重要的。对于随机森林这个模型,它本质上是随机的,设置不同的随机状态可以彻底改变构建的模型。固定random_state后,每次构建的模型是相同的、生成的数据集是相同的、每次的拆分结果也是相同的。固定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后,每次抓取沙子时的影响因素将被固定为具体的某一组,这样每次抓取的沙子就具有了相同的状态。

免责声明:文章转载自《【转】对random_state参数的理解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Kubernetes常用命令Foxmail忘了帐户访问密码咋办?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于OpenGL编写一个简易的2D渲染框架-06 编写一个粒子系统

在这篇文章中,我将详细说明如何编写一个简易的粒子系统。 粒子系统可以模拟许多效果,下图便是这次的粒子系统的显示效果。为了方便演示,就弄成了一个动图。 图中,同时显示了 7 种不同粒子效果,看上去效果挺炫酷的。 粒子编辑器 使用粒子编辑器,可以在可视化视图中快速、简便的做出想要的粒子效果。这个粒子系统支持导入 cocos2d 粒子编辑器文件,而且粒子系统的...

Java中生成随机数的4种方式!

在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机数的方式,以及它们之间的区别和每种生成方式所对应的场景。 1.Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的随机数。Random 使用的随机算法为 linear congruential pseudorandom number...

python画树

用python画简单的树 代码如下: importturtle as T importrandom importtime #画樱花的躯干(60,t) defTree(branch, t): time.sleep(0.0005) if branch > 3: if 8 <= branch <= 12:...

点云下采样2

来源:https://blog.csdn.net/weixin_41281151/article/details/107125844 点云体素降采样(Voxel Filter Downsampling)代码参考网址秦乐乐CSDN博客理论参考知乎博主:WALL-E 1.方法Centroid 均值采样Random select 随机采样 2.伪代码流程 注解...

random_state 参数

  SVC(random_state=0)里有参数 random_state   random_state 相当于随机数种子,下面会有代码来解释其作用。图中设置了 random.seed() 就相当于在 SVC 中设置了 random_state。   没有设置 random.seed(),每次取得的结果就不一样,它的随机数种子与当前系统时间有关。 im...

numpy随机索引(不重复)和打乱元素

def getRandomIndex(n, x): # 索引范围为[0, n),随机选x个不重复,注意replace=False才是不重复,replace=True则有可能重复 index = np.random.choice(np.arange(n), size=x, replace=False) return index getRa...