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]

     

     

  • 相关阅读:
    如何用伪类画出一个三角形
    关于昨天遇到题目的一点随笔
    opacity与rgba
    选择框脚本_移动/重排选项 P435
    文字等宽
    CSS3风骚渐变
    表单序列化 P436
    选择框脚本_添加/删除选项 P434
    选择框脚本_用事件选中选项,获取选中项信息 P432
    文本框组脚本_自动切换焦点“例如加区号和分机号的电话号码文本框组” P426
  • 原文地址:https://www.cnblogs.com/jiaxin359/p/8794936.html
Copyright © 2011-2022 走看看