zoukankan      html  css  js  c++  java
  • 【转】对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后,每次抓取沙子时的影响因素将被固定为具体的某一组,这样每次抓取的沙子就具有了相同的状态。

  • 相关阅读:
    【2020-05-17】人生十三信条
    【2020-05-16】评价与骄傲
    【2020-05-15】每天都充满向上的激情
    【04NOIP普及组】火星人(信息学奥赛一本通 1929)(洛谷 1088)
    next_permutation(全排列算法)
    【03NOIP普及组】麦森数(信息学奥赛一本通 1925)(洛谷 1045)
    快速幂
    【03NOIP普及组】栈(信息学奥赛一本通 1924)(洛谷 1044)
    【06NOIP普及组】数列(信息学奥赛一本通 1937)(洛谷 1062)
    【00NOIP普及组】计算器的改良(信息学奥赛一本通 1910)(洛谷 1022)
  • 原文地址:https://www.cnblogs.com/xianhan/p/10644873.html
Copyright © 2011-2022 走看看