zoukankan      html  css  js  c++  java
  • 随机森林

    集成学习中的 stacking 以及python实现当中提到关于Bagging和随机森林的一点点内容,这里继续再看一下,随机森林的一些特点,以及sklearn中有哪些可以调节的参数。

    随机森林的基本思想

    随机森林是利用决策树作为基学习器,每个基学习器的样本采用bootstrap(自助法)来获得,自助法属于有放回的采样方法,它的样本大小和原来样本大小是一样的,没有选择到的样本用来进行测试。 另外,每棵决策树在选择属性划分点的时候并不是从全部属性里面选择最优的,而是先从所有属性里面随机选择一些属性,然后再从选择的属性里面选择最优的。 上面的两个操作可以避免算法过拟合。

    sklearn中随机森林的参数

    参考这篇文章scikit-learn随机森林调参小结以及官网介绍,总结一下参数:

    n_estimators:  森林当中树的个数,即使用的基学习器的个数

    crierion:   使用的评判标准,和决策树中的参数是一样的,默认为‘gini’基尼系数,可也选择’entropy’信息熵。

    max_features:   划分属性时候最大的特征数量。实际上决策树进行划分时不单单使用一个属性进行划分。

    max_depth:   控制树的深度

    bootstrap:   是否采用自助法来得到样本,默认为True

    oob_score:  是否采用袋外样本来评估模型的好坏。即上面所说的bootstrap当中未采到的样本。默认为False,实际当中经常设置为True

    如使用下面一组参数:进行调参

    [{'n_estimators': [10, 50, 100, 300], 'criterion': ['gini', 'entropy'], 'max_depth': [2, 4, 6, 8, 10, None], 'oob_score': [True], 'random_state': [0]}]

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.model_selection import GridSearchCV
    rf_parameters = [{'n_estimators': [10, 50, 100, 300], 'criterion': ['gini', 'entropy'], 'max_depth': [2, 4, 6, 8, 10, None], 'oob_score': [True], 'random_state': [0]}]
    rf_model = RandomForestClassifier()
    rf_grid = GridSearchCV(rf_model, rf_parameters, )
    rf_grid.fit(train_x, train_y)  
    print('use Random Forest MLA',)
    print('best sore',rf_grid.best_score_)
    print('train_score',rf_grid.cv_results_['mean_test_score'])

    train_x和train_y是我根据titanic构造的数据 download here

    输出结果如下:

    use Random Forest MLA
    best sore 0.819304152637486
    train_score [0.80022447 0.79685746 0.79461279 0.79349046 0.81144781 0.81593715
     0.80808081 0.81593715 0.81818182 0.81705948 0.81144781 0.80808081
     0.81257015 0.81032548 0.81032548 0.8047138  0.8047138  0.81593715
     0.80583614 0.8013468  0.80022447 0.80808081 0.80695847 0.79685746
     0.8047138  0.79685746 0.79461279 0.79349046 0.80920314 0.81144781
     0.81369248 0.81930415 0.81481481 0.81369248 0.81481481 0.80920314
     0.80695847 0.80359147 0.81144781 0.80359147 0.8047138  0.80920314
     0.80695847 0.80695847 0.80246914 0.80695847 0.80246914 0.79685746]

     

     

  • 相关阅读:
    最近很火的GAN应用
    pose项目里我遇到的问题
    pose的初体验
    Ubuntu 移动硬盘不能用
    深度学习中参数量与计算量的理解
    GAN的流程-cyclegan为例
    The version of SOS does not match the version of CLR you are debugging
    mnist 手写数字识别
    计算模型-图、数据模型-张量、运算模型-会话
    tensorflow环境安装
  • 原文地址:https://www.cnblogs.com/jiaxin359/p/8794936.html
Copyright © 2011-2022 走看看