zoukankan      html  css  js  c++  java
  • 集成学习(Random Forest)——实践

    对于集成学习,由于是多个基学习期共同作用结果,因此在做参数调节时候就有基学习器的参数和集成学习的参数两类

    在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是RandomForestRegressor

    官方文档:http://scikit-learn.org/stable/modules/ensemble.html#ensemble

    RandomForestClassifier  : http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier

    RandomForestRegressor :http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor

    1、RF框架参数

    参数说明:

    1、n_estimators:随机森林的基学习器数量

    2、oob_score:是否使用袋外数据来评价模型

    2、基学习器参数

    基学习器由于可选的很多,sklearn里面的好像默认是决策树

    参数说明:

    1、max_features:这个最重要:在做决策树时候选择的特征数量 。默认是"None",意味着划分时考虑所有的特征数;如果是"log2"意味着划分时最多考虑log2Nlog2N个特征;如果是"sqrt"或者"auto"意味着划分时最多考虑N−−√N个特征。

    2、criterion:决策树划分的衡量,gini是基尼系数,回归树种是mse均方误差

    3、max_depth:决策树的最大深度

    4、min_samples_split:最小划分的样本数,如果低于这个样本数,决策树不做划分

    实例说明:

    #导入库
    import pandas as pd
    import numpy as np
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.ensemble import RandomForestRegressor
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score
    from sklearn.model_selection import GridSearchCV
    #加载数据
    iris = load_iris()
    x = iris.data
    y = iris.target
    x_train,x_test,y_train,y_test = train_test_split(x,y,random_state = 1)
    #使用网格搜索确定要建立的基学习器个数
    clf = GridSearchCV(RandomForestClassifier(max_features='log2'),param_grid=({'n_estimators':range(1,101,10)}),cv=10)
    clf.fit(x_train,y_train)
    print(clf.best_params_)
    #再使用网格搜索来确定决策树的参数
    clf2 = GridSearchCV(RandomForestClassifier(n_estimators=11),param_grid=({'max_depth':range(1,10)}))
    clf2.fit(x_train,y_train)
    print(clf2.best_params_)
    #根据最大层数3,最多棵树11,建立最终的随机森林来预测
    rf = RandomForestClassifier(n_estimators=11,max_depth=3,max_features='log2')
    rf.fit(x_train,y_train)
    y_hat = rf.predict(x_test)
    print(accuracy_score(y_hat,y_test))
  • 相关阅读:
    MVP模式与MVVM模式
    webpack的配置处理
    leetcode 287 Find the Duplicate Number
    leetcode 152 Maximum Product Subarray
    leetcode 76 Minimum Window Substring
    感知器算法初探
    leetcode 179 Largest Number
    leetcode 33 Search in Rotated Sorted Array
    leetcode 334 Increasing Triplet Subsequence
    朴素贝叶斯分类器初探
  • 原文地址:https://www.cnblogs.com/jiegege/p/8582825.html
Copyright © 2011-2022 走看看