一、前言

在学习机器学习的过程中,常常遇到random_state这个参数,并且好多时候都是 random_state=42,感觉挺有意思的,于是,百度一下,然后做一个总结。

作用:控制随机状态。

问题:为什么需要用到这样一个参数random_state(随机状态)?看完文章你就会知道了。

一句话概括:random_state是一个随机种子,是在任意带有随机性的类或函数里作为参数来控制随机模式。当random_state取某一个值时,也就确定了一种规则。

random_state可以用于很多函数,我比较熟悉的是用于以下三个地方:

1、训练集测试集的划分

2、构建决策树

3、构建随机森林

二:random_state的三种应用场所

2.1 划分训练集和测试集的类train_test_split

xtrain,xtest,ytrain,ytest = train_test_split(X,y,test_size=0.2,random_state=42)

随机数种子控制每次划分训练集和测试集的模式,其取值不变时划分得到的结果一模一样,其值改变时,划分得到的结果不同。若不设置此参数,则函数会自动选择一种随机模式,得到的结果也就不同。

2.2 构建决策树的函数

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

其取值不变时,用相同的训练集建树得到的结果一模一样,对测试集的预测结果也是一样的;

其值改变时,得到的结果不同;

若不设置此参数,则函数会自动选择一种随机模式,每次得到的结果也就不同。

2.3 构建随机森林

clf = RandomForestClassifier(random_state=0)

其取值不变时,用相同的训练集建森林得到的结果一模一样,对测试集的预测结果也是一样的;

其值改变时,建森林得到的结果不同;

若不设置此参数,则函数会自动选择一种随机模式,每次得到的结果也就不同。

2.4 小结

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

对于随机森林这个模型,它本质上是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变构建的模型。
对于数据集的生成,它本质上也是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变生成的数据集。
对于数据集的拆分,它本质上也是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变拆分的结果。

固定random_state后,每次构建的模型是相同的、生成的数据集是相同的、每次的拆分结果也是相同的。

三、总结

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

因为同一算法模型在不同的训练集和测试集的会得到不同的准确率,无法调参。所以在sklearn 中可以通过添加random_state,通过固定random_state的值,每次可以分割得到同样训练集和测试集。因此random_state参数主要是为了保证每次都分割一样的训练集和测试机,大小可以是任意一个整数,在调参缓解,只要保证其值一致即可。

所以,至于random_state=?随你喽

【总结】python sklearn模型中random_state参数的意义相关推荐

  1. sklearn模型中random_state参数的意义

    sklearn模型中random_state参数的意义 random_state 意义 使用情况 random_state 意义 例如:在sklearn可以随机分割训练集和测试集(交叉验证),只需要在 ...

  2. Python的数据分析中超参数调优方法:网格搜索

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python的数据分析中 超参数调优方法:网格搜索 ● 选择题 以下说 ...

  3. 深度学习模型中的参数数量(备忘)

    原文地址:huay' blog/模型中的参数数量(备忘) 记录模型参数数量的计算方法 最早使用 tensorflow 的时候没怎么注意这个问题: 后面高级 API 用的多了,有点忘记怎么计算模型的参数 ...

  4. python打包exe 之打包sklearn模型中的各种坑及其解决方法。

    之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe. python打包成exe 可执行文件 .教程 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标, ...

  5. 来啦|深度讲解风控模型中的参数调优

    大数据时代的风控体系必有模型部分的参与,用策略贯穿整个风控体系,以数据为驱动,模型一定是标配内容.于是在模型的建设上,如何精细化地输出一套有效的模型,就是在精细化管理上非常重要的一个差异点.不管传统的 ...

  6. 8145v5 参数_如何估计模型中的参数

    本文是我对使用软件计算模型中参数的过程概念理解的简介~!了解这有利于软件的使用者理解软件使用软件求解参数进行模型时的一堆琐碎的选项有帮助,也便于将药动学模型中的一些概念与数学中常用的一些概念联系起来. ...

  7. GPDB中gp_vmem_protect_limit参数的意义

    gp_vmem_protect_limit参数的意义 1.gp_vmem_protect_limit参数说明 1)在启用了基于资源队列的资源管理系统时,gp_vmem_protect_limit参数表 ...

  8. patch文件中各参数的意义

    某些打不上的patch,可以通过修改patch文件中的参数进行修改以使其可用.下面是一个完整的patch: From 0665fa1a8584c22747666a17eaafba8cd848db39 ...

  9. pca = PCA(n_components=117, whiten=True, random_state=42)中random_state参数作用

    参考 https://stackoverflow.com/questions/48471632/sklearn-pca-random-state-parameter-function Sklearn库 ...

最新文章

  1. IT职场常见疾病之“颈椎病”
  2. 【安富莱原创开源应用第3期】花式玩转网络摄像头之VNC远程桌面版本,稳定运行2年不死机...
  3. 将数据导入DB2带自增字段的表
  4. JAVA基础实例(一)
  5. 2013年第四季度总结报告
  6. 阿里云上千规模节点项目提炼精华,全在这里了!
  7. java中各种运算符
  8. mockito验证参数_Mockito验证
  9. 2021年全国火车站点shp数据包含高铁站货运站arcgis字段属性有名称(+预览图)
  10. 什么是白箱测试、黑箱测试、回归测试?
  11. 损失函数总结 : 评价模型好坏指标准确率 和 稳定性
  12. 天耀18期 - 10.字符串常用方法【作业】
  13. ACC-C++组初赛
  14. 学习R语言这几本电子书就够了!
  15. ffmpeg与x264编码指南
  16. MySQL密码忘记了如何操作
  17. 判断股票代码是上海市场SH还是深圳市场SZ
  18. 最好用的HTML文本编辑器:BBEdit for Mac
  19. 一直在构建工作空间_国土空间规划一周知识整理(2020.11.09-2020.11.15)
  20. 2022年京东年货节活动玩法:头号京贴每满200减30、限时红包雨

热门文章

  1. Android开发自学教程,安卓面试题及答案2022
  2. 小学四年级计算机考试题,小学四年级信息技术试卷题库.doc
  3. Android 第三方应用接入微信平台(2)
  4. compareTo()和compare()的详解和区别
  5. 随心测试_Python Se_005鼠标悬停操作
  6. GSoC 2015 总结
  7. tf.estimator.train_and_evaluate 详解
  8. 测试工程师面试汇总【完美世界】
  9. 截至2012年5月23日19点58分支持CUDA的NVIDIA的GPU列表(Geforce)
  10. 如何区分斜杠和反斜杠?