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]

     

     

  • 相关阅读:
    CodeForces
    [VS Code] 入门-自定键盘快捷键
    代码格式化工具:clang-format
    用 shell 脚本做 restful api 接口监控
    [apue] 一图读懂 unix 文件句柄及文件共享过程
    Python Django开发的WebSSH 堡垒机
    最好用的流程编辑器bpmn-js系列之基本使用
    树莓派系列(第三篇):树莓派换源 、连接WiFi、安装transmission、samba
    教你用MacBook玩童年FC游戏
    vscode、hbuider编辑器代码片段示例
  • 原文地址:https://www.cnblogs.com/jiaxin359/p/8794936.html
Copyright © 2011-2022 走看看