您当前的位置:首页 > 计算机 > 编程开发 > Python

Python+sklearn随机森林算法使用入门

时间:01-04来源:作者:点击数:

随机森林是一种集成学习方法,基本思想是把几棵不同参数的决策树(参考:Python+sklearn决策树算法使用入门)打包到一起,每棵决策树单独进行预测,然后计算所有决策树预测结果的平均值(适用于回归分析)或所有决策树“投票”得到最终结果(适用于分类)。在随机森林算法中,不会让每棵树都生成最佳的节点,而是在每个节点上随机选择一个特征进行分裂。

扩展库sklearn在ensemble模块中提供了随机森林分类器RandomForestClassifier和随机森林回归器RandomForestRegressor。本文重点介绍随机森林分类器的用法,该类构造方法语法为

__init__(self, n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)

RandomForestRegressor类构造方法常用参数以及RandomForestRegressor类对象常用方法如下面的两个表所示。

表 RandomForestClassifier类构造方法常用参数及含义

参数名称 含义
n_estimators 用来指定森林中树的数量,默认为10
criterion 用来指定衡量分裂(创建子节点)质量的函数,取值为'gini'时使用基尼值,为'entropy'时使用信息增益
max_features 用来指定寻找最佳分裂时考虑的特征数量,可以是整数,也可以是实数(表示百分比)、'auto'(相当于max_features=sqrt(n_features)、'sqrt'(与'auto'含义相同)、'log2'(相当于max_features=log2(n_features))、None(相当于max_features=n_features)
max_depth 用来指定树的最大深度
min_samples_split 用来指定分裂节点时要求的样本数量最小值,值为实数时表示百分比
min_samples_leaf 用来指定叶子节点要求的样本数量最小值
max_leaf_nodes 在最佳优先方式中使用该参数生成树
min_impurity_split 在树的生长过程中早停的阈值,如果一个节点的不纯度高于该阈值则进行分裂,否则为叶子节点
min_impurity_decrease 如果一个节点分裂后带来的不纯度减少的量大于等于该参数的值,就对该节点进行分裂
bootstrap 用来设置在构建树时是否可以重复使用同一个样本
oob_score 用来设置是否使用out-of-bag样本(本次没有使用的样本)估计泛化精度

表 RandomForestClassifier类对象常用方法

方法 功能
predict(self, X) 预测样本集X中样本的目标
apply(self, X) 把森林中的树应用到样本集X,返回叶子索引
decision_path(self, X) 返回森林中的决策路径
fit(self, X, y, sample_weight=None) 根据训练集(X, y)构建包含若干决策树的森林
score(self, X, y, sample_weight=None) 根据样本集和对应的真实值计算并返回模型得分

下面代码演示了随机森林分类器的简单使用:

图片

运行结果为:

图片
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门