随机森林

随机森林

1.概述

1.1 集成算法概述

集成学习通过在数据上构建多个模型,集成所有模型的建模结果,汇总之后得到一个综合的结果,以此来获取比单个模型更好的回归或分类表现。

多个模型集成成为的模型叫做“集成评估器”,组成集成评估器的每个单个的模型叫做“基评估器”。

1.2 集成算法分类

装袋法(Bagging):装袋法的核心是构建多个相互独立的基评估器,然后对各个基评估器的预测结果进行平均或按照少数服从多数的方式来决定集成评估器的结果,装代法的代表就是随机森林

提升法(Boosting):在提升法中,基评估器是按顺序——构建的,其核心思想是结合弱评估器的力量一次次对难以评估的样本进行预测,从而得到一个强评估器。提升法的代表模型有Adaboost梯度提升树

2.随机森林搭建

2.1 随机森林分类器(RandomForestClassifier)

sklearn.ensemble.RandomForestClassifier(n_estimators=‘10’,criterion=‘gini’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_features,min_impurity_decrease)

2.1.1 重要参数解读
参数 含义
criterion 不纯度的衡量指标,有基尼系数和信息熵两种选择
max_depth 数的最大深度,超过最大深度的树枝都会被剪掉
min_samples_leaf 一个节点在分支后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则就不会被分支
min_samples_split 一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则就不会发生
max_features max_features随机森林允许单个决策树使用特征的最大数量,超过限制个数的特征都会被舍弃,默认值为总特征个数开平方
min_impurity_decrease 限制信息增益的大小,信息增益小于设定数值的分枝就不会发生
2.1.2 搭建随机森林分类器

(1)导入相关的库

%matplotlib inline
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_wine
from sklearn.model_selection import cross_val_score
from matplotlib.pyplot as plt

(2)导入需要的数据集

wine = load_wine()
wine.data		# 查看 wine 的特征值
wine.target     # 查看 wine 的标签值

(3)建立决策树和随机森林模型

from sklearn.model_selection import train_test_split

X_train,Xtest,ytrain,ytest = train_test_split(wine.data,wine.target,test_size=0.3)
clf = DecisionTreeClassifier(random_state=0)
rfc = RandomForestClassifier(random_state=0)
clf = clf.fit(X_train,ytrain)
rfc = rfc.fit(X_train,ytrain)
score_c = clf.score(Xtest,ytest)
score_r = rfc.score(Xtest,ytest)

print('Single tree:{}'.format(score_c)
     ,'Random Forest:{}'.format(score_r))
  Single tree:0.9074074074074074     Random Forest:0.9444444444444444

(4)画出随机森林和决策树在一组交叉验证下的效果对比

label = 'RandomForest'
for model in [RandomForestClassifier(n_estimators=25),DecisionTreeClassifier()]:
    score = cross_val_score(model,wine.data,wine.target,cv=10)
    print('{}:'.format(label)),print(score.mean())
    plt.plot(range(1,11),score,label=label)
    plt.legend()
    label = 'DecisionTree'
RandomForest:
0.9783625730994153
DecisionTree:
0.9058135534915721

在这里插入图片描述
(5)画出随机森林和决策树在十组交叉验证下的效果对比

rfc_1 = []
clf_1 = []

for i in range(10):
    rfc = RandomForestClassifier(n_estimators=25)
    rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10).mean()
    rfc_1.append(rfc_s)
    clf = DecisionTreeClassifier()
    clf_s = cross_val_score(clf,wine.data,wine.target,cv=10).mean()
    clf_1.append(clf_s)

plt.plot(range(1,11),rfc_1,label='Random Forest')
plt.plot(range(1,11),clf_1,label='Decision Tree')
plt.legend()
plt.show()

在这里插入图片描述
从4,5两步不难看出,单个决策树的波动轨迹和随机森林在大体上是保持一致的,单个决策树的准确率越高,随机森林的准确率也就越高

(6)n_estimators 的学习曲线

superpa = []
for i in range(1,201):
    rfc = RandomForestClassifier(n_estimators=i)
    rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值