随机森林是非常具有代表性的装袋集成算法,装袋集成算法是对基评估器的预测结果进行平均或用多数表决原则来决定集成评估器的结果。它的所有基评估器都是决策树,分类树组成的森林就叫做随机森林分类器,使用方法如下。
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
def trainModel(data, label):
"""
使用随机森林分类训练模型
:param data: 特征
:param label: 标签
"""
print("fit model ...")
rf = RandomForestClassifier(n_estimators=100, max_depth=10, min_samples_split=10, random_state=0, oob_score=True) # 随机森林
scores = cross_val_score(rf, data, label, cv=10) # 交叉检验,计算模型平均准确率
print("rf: ", scores.mean())
rf.fit(data, label) # 拟合模型
print(rf.oob_score_) # 在袋外数据上测试的结果
重要参数:
1)n_estimators:基评估器的数量,值越大模型的效果往往越好,但是当n_estimators的值达到一定程度后,随机森林的精确性不再上升或者开始波动,而且n_estimators越大需要的计算量和内存也越大,训练的时间也越长。
2)max_depth:树的最大深度,超过最大深度的树枝都会被剪掉。
3)random_state:控制生成森林的模式。
4)bootstrap:默认为True,通常设置为True,代表采用有放回的随机抽样技术。
5)oob_score:如果在实例化的时候设置为True,可以使用袋外数据来测试, 袋外数据即那些没有参与建模的数据;使用oob_score_来查看在袋外数据上测试的结果。