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

  • 相关阅读:
    MVC+EasyUI 菜单导航的实现
    MVC4 +EasyUI 使用TreeGrid 方法
    MYSQL 内存报错 Use 'mysqld --thread_stack=#' to specify a bigger stack.
    System.Data.EntityState”在未被引用的程序集中定义
    android 学习第一天 了解事件机制,页面跳转等常用操作
    EasyUI TreeGrid DataTable转换数据实现案例
    王慧文清华大学的演讲的观点摘要
    《自由选择》
    优秀的工程师
    【mark】Windows Exploitation, post exploitation sites for reference
  • 原文地址:https://www.cnblogs.com/xianhan/p/10644873.html
Copyright © 2020-2023  润新知