【6】决策树

决策树广泛用于分类和回归问题。比如我们要区分四种动物:鹰、企鹅、海豚、熊,我可以由几个if/else来判断,

import numpy as np
import pandas as pd
import mglearn
import matplotlib.pyplot as plt
import graphviz
from sklearn.model_selection import train_test_split

mglearn.plots.plot_animal_tree()

在这里插入图片描述

注意,如果报错 python导入graphviz报错:failed to execute [‘dot’, ‘-Tpdf’, ‘-O’, ‘network.gv’], make sure the Graphviz… ,解决方法如下:
(1)首先pip,
pip install -i https://pypi.doubanio.com/simple/ graphviz
(2)然后去graphviz官网下载对应自己电脑系统的graphviz程序,将graphviz程序安装在电脑上,
(3)先添加用户变量PATH,注意不要删除PATH原有的内容,在原有内容后边加一个英文状态的;,然后将安装后的graphviz程序对应的路径粘贴在;后,点击确定。
(4)然后添加系统变量,因为我的系统变量里没有PATH,所以我新建了PATH,同样的,将安装后的graphviz程序对应的路径粘贴进去,点确定。
(5)然后关掉jupyter notebook,重新打开一次,就可以了。

如果树中某个结点所包含的数据点的目标值都相同,那么这个叶结点就是“纯的”。如果要对新数据点预测,首先判定这个点位于特征空间划分的哪个区域,然后将该区域的多数目标值(如果是纯的叶结点,就是单一目标值)作为预测结果。同样,决策树也可以用于回归任务,方法相同,基于每个结点的测试进行遍历,最终找到新数据点所属的叶结点,这一数据点的输出即为此叶结点中所有训练点的平均目标值。

如果所有叶结点都是纯的叶结点,这样的模型会非常复杂,模型高度过拟合。防止过拟合有两种策略:一种是及早停止树的生长,叫“预剪枝”;另一种是先构造树,然后删除或折叠信息量很少的结点,叫“后剪枝”。

在乳腺癌数据集上详细看一下预剪枝的效果,默认将树完全展开,

from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
cancer=load_breast_cancer()
X_train,X_test,y_train,y_test=train_test_split(
    cancer.data,cancer.target,stratify=cancer.target,random_state=42)
tree=DecisionTreeClassifier(random_state=0)
tree.fit(X_train,y_train)
print('训练集准确度:{:.3f}'.format(tree.score(X_train,y_train)))
print('测试集准确度:{:.3f}'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值