@[TOC] 学习笔记:随机森林
1 集成算法
集成评估器(ensemble estimator)由多个基评估器(base estimator)组成。
三类集成算法:
Bagging:相互独立的评估器,对多个独立的基评估器的预测结果进行平均或多数表决。
Boosting:基评估器相关
stacking
2 随机森林RF
2.1 库&模块导入
%matplotlib inline
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import comb
2.2 RandomForestClassifier
class sklearn.ensemble.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=None, random_state=None, verbose=0, warm_start=False, class_weight=None)
2.2.1 参数学习曲线
#n_estimator的学习曲线
superpa = []
for i in range(200):
rfc = RandomForestClassifier(n_estimators=i+1, n_jobs=-1)
rfc_s = cross_val_score(rfc, wine.data, wine.target, cv=10).mean()
superpa.append(rfc_s)
print(max(superpa),superpa.index(max(superpa)))
plt.figure(figsize=[20,5])
plt.plot(range(1,201), superpa)
plt.show()
2.2.2 参数:实例化过程中将模型具体化。
- n_estimators,森林中树的数量,一般可取为10~200。
- random_state 固定森林的模式。
- bootstrap,默认为true,有放回随机抽样,对n个原始样本,进行有放回抽取n次,组成有n个样本的自助集,建立m个这样的自助集,m其实就是树的个数,用这些自助集来训练出不同的基分类器。1-1/e=63%的样本会进入自助集,剩余的即为袋外数据,可作为测试集。
- oob_score=True.可使用袋外数据OOB作为测试集。
2.2.3 属性
- rfc.estimators_
-返回每棵树的属性 - rfc.oob_score_
返回袋外数据在经训练后的RF模型的测试结果
rfc = RandomForestClassifier(oob_score=True)
rfc = rfc.fit(wine.data, wine.target)#全部数据代入模型训练
rfc.oob_score_
- rfc.feature_importances
返回每个特征的重要性
2.2.4 接口
- rfc.fit(Xtrain, Ytrain)
- rfc.apply(xtest)
- rfc.score(Xtest, Ytest)
- rfc.predict(Xtest)
- rfc.predict_proba(Xtest)
tips:
from scipy.special import comb
comb(10,1)#表示C^1^~10~
import sklearn
sorted(sklearn.metrics.SCORES.keys())#评分方式列表
随机森林比单棵决策树预测效果好的前提条件是:单棵决策树的预测正确率大于0.5。基分类器准确率大于0.5时,集成效果才比基分类器好。