您的位置:首页 > 其它

sklearn.ensemble.RandomForestClassifier随机森林rf参数详细解读

2018-03-13 16:01 537 查看
导入模块:

from sklearn.ensemble import RandomForestClassifier


主要参数:

RandomForestClassifier(
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,
verbose=0,
warm_start=False,
class_weight=None)


常用参数解读

n_estimators : integer, optional (default=10)

随机森林中树的个数,即学习器的个数。

max_features : (default=”auto”)

划分叶子节点,选择的最大特征数目

n_features为全部的特征数

If “auto”, then max_features=sqrt(n_features).

•If “sqrt”, then max_features=sqrt(n_features) (same as “auto”).

•If “log2”, then max_features=log2(n_features).

•If None, then max_features=n_features.和传统决策树叶子划分的情况一致

max_depth : 整型,可选(default=None)

树的最大深度,如果选择default=None,树就一致扩展,直到所有的叶子节点都是同一类样本,或者达到最小样本划分(min_samples_split)的数目。

min_samples_split : (default=2)

最小样本划分的数目,就是样本的数目少于等于这个值,就不能继续划分当前节点了

min_samples_leaf : int, float, optional (default=1)

叶子节点最少样本数,如果某叶子节点数目这个值,就会和兄弟节点一起被剪枝。

min_weight_fraction_leaf:叶子节点最小的样本权重和

max_leaf_nodes: (default=None)

最大叶子节点数,默认是”None”,即不限制最大的叶子节点数

min_impurity_split:节点划分的最小不纯度,是结束树增长的一个阈值,如果不纯度超过这个阈值,那么该节点就会继续划分,否则不划分,成为一个叶子节点。

min_impurity_decrease : float, optional (default=0.)

最小不纯度减少的阈值,如果对该节点进行划分,使得不纯度的减少大于等于这个值,那么该节点就会划分,否则,不划分。

bootstrap : boolean, optional (default=True)

自助采样,又放回的采样,大量采样的结果就是初始样本的63.2%作为训练集。默认选择自助采样法。

oob_score : bool (default=False)

out-of-bag estimate,包外估计;是否选用包外样本(即bootstrap采样剩下的36.8%的样本)作为验证集,对训练结果进行验证,默认不采用。

n_jobs : integer, optional (default=1)

并行使用的进程数,默认1个,如果设置为-1,该值为总的核数。

random_state :(default=None)

随机状态,默认由np.numpy生成

verbose:int, optional (default=0)

显示输出的一些参数,默认不输出。

RandomForestClassifier的使用

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification#导入训练集
X,y = make_classification(n_samples=1000, n_features=4,n_informative=2, n_redundant=0,                     random_state=0, shuffle=False)
clf = RandomForestClassifier(max_depth=2,random_state=0)
clf.fit(X, y)
#可以输出4个特征的特征重要性
print(clf.feature_importances_)
#结果:[ 0.17287856  0.80608704  0.01884792  0.00218648]
# 预测
print(clf.predict([[0, 0, 0, 0]]))


使用GridSearchCV交叉验证

from sklearn.model_selection import GridSearchCV
n_estimators = range(100,500,50)
hyper = {'n_estimators':n_estimators}
gd = GridSearchCV(estimator=RandomForestClassifier(random_state=0),param_grid=hyper,verbose=True)
#estimator,param_grid, verbose 是GridSearchCV()的参数,param_grid=hyper负责把先前设置的参数传给RandomForestClassifier()
gd.fit(X,y)
print(gd.best_score_)#输出最高的准确率
print(gd.best_estimator_)#输出最好的学习器,包括一系列参数
#得到最优参数后,再重新训练一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息