sklearn决策树和随机森林分类

        决策树又称为判定树,决策树在机器学习中有着广泛的应用,主要是因为它易于解释。比如,我们现在要做一个决策,周末是否要打球,我们可能要考虑几个因素。   第一,天气因素,如果是晴天,我们就打球,如果是雨天我们就不打球。  第二,球场是否满员,如果满员,我们就不打球,如果不满员我们就打球。  第三,是否需要加班,如果加班则不打球,如果不需要加班则打球。这样我们就形成了一个决策树,如图所示。

我们可以将这个决策过程抽象一下,每个决策点我们称之为分支节点,如图所示 

例:现在我需要做一个是否去逛街购物的决策,其中有几个因素共同影响我做这个决策:空余的时间、合适的天气、足够的资金和志同道合的伙伴。首先是时间是否空余,如果有空闲的时间就可以去,否则不去;其次是天气是否合适,阴天适合逛街,晴天和雨天都不适合;再次是手中的资金是否足够自己去购物,如果资金足够就去,否则不去;最后是是否有一起去的伙伴,如果有伙伴,那么就去,否则不去。根据以上因素,就能用图的决策树帮助我做这个决策。

       

        随机森林是多个决策树的组合,最后的结果是各个决策树结果的综合考量。随机森林的工作流程如下图。随机森林的随机主要体现在两点:第一是随机抽取样本,第二是随机抽取特征。随机森林通过随机有放回地抽取数据样本集n个,然后用这n个样本集训练n棵决策树。如果做的是分类任务,就将n棵树的结果投票作为最后的输出结果,如果做的是回归任务,就将最后的n棵树的结果的均值作为最后的输出结果。

案例实战:用决策树和随机森林对sklearn自带的红酒数据集wine进行分类。

#导入需要的模块
from sklearn.tree import DecisionTreeClassifier
from matplotlib import pyplot as plt
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

#导入数据集
wine = load_wine()
X=wine.data
y=wine.target
#划分训练测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)

clf = DecisionTreeClassifier(random_state=0)
rfc = RandomForestClassifier(random_state=0)
clf.fit(X_train, y_train)
rfc.fit(X_train, y_train)
score_c = clf.score(X_test, y_test)
score_r = rfc.score(X_test, y_test)
print("单棵树的准确率为: {}".format(score_c), "随机森林的准确率为:{}".format(score_r))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值