【Python机器学习】构造决策树

news2024/11/24 9:02:07

通常来说,构造决策树直到所有叶结点都是纯的叶结点,但这会导致模型非常复杂,并且对于训练数据高度过拟合。

为了防止过拟合,有两种常见策略:

1、尽早停止树的生长,也叫预剪枝

2、先构造树,但随后删除或折叠信息量很少的结点,也叫后剪枝。

预剪枝的限制条件可能包含限制树的最大深度、限制叶结点的最大数目、规定一个结点中数据点的最小数目。

如果不防止过拟合:


from sklearn.tree import DecisionTreeClassifier,export_graphviz
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
import graphviz


plt.rcParams['font.sans-serif'] = ['SimHei']

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('训练集score:{:.3f}'.format(tree.score(X_train,y_train)))
print('测试集score:{:.3f}'.format(tree.score(X_test,y_test)))

可以看到,训练集上精度是100%,但测试集的精度只有93.7%。

防止过拟合,比如限制决策树的深度为4:

tree=DecisionTreeClassifier(max_depth=4,random_state=0)

可以看到,虽然训练集的精度下降,但是测试集的精度有所提升。

还可以用tree模块的export_graphviz函数来将树可视化。这个函数会生成一个dot文件,然后用graphviz读取这个文件并可视化(通过生成pdf文件的方式):

export_graphviz(tree,out_file='tree_1.dot',class_names=['malignant','benigh'],feature_names=cancer.feature_names,impurity=False,filled=True)
with open('tree_1.dot') as f:
    dot_graph=f.read()
g=graphviz.Source(dot_graph)
g.render('决策树可视化')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1366884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序实战-01翻页时钟-1

文章目录 前言需求分析功能设计界面设计界面结构设计界面样式设计 逻辑设计 单页功能实现运行结果 前言 我经常在手机上用的一款app有一个功能是翻页时钟,基于之前学习的小程序相关的基础内容,我打算在微信小程序中也设计一个翻页时钟功能,J…

专业图表分析网页模板,让你轻松打造震撼的大数据可视化大屏电子沙盘

源码介绍 基于html/css/js,包含行业: 智慧政务 智慧社区 金融行业 智慧交通 智慧门店 智慧大厅 智慧物流 智慧医疗 通用模板 大数据分析平台 实时数据K线图(可自由配置多种行业模式) 可切换式大屏展示 翻牌效果 自定义字体

CCF模拟题 202305-1 重复局面

试题编号: 202305-1 试题名称: 重复局面 时间限制: 1.0s 内存限制: 512.0MB 题目背景 国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以用…

(生物信息学)R语言绘图初-中-高级——3-10分文章必备——点阵图(初级)

生物信息学文章的发表要求除了思路和热点以外,图片绘制是否精美也是十分重要的,本专栏为(生物信息学)R语言绘图初-中-高级——3-10分文章必备,主要通过大量文献,总结3-10分文章中高频出现的各种图片,并给大家提供图片复现的R语言代码,及图片识读。 本专栏将向大家介绍…

Android Matrix (三)矩阵组合和应用变换

在 Android 开发中,Matrix 类不仅提供了 mapPoints 方法来变换点坐标,还提供了多种其他用法,使其成为处理图像和视图变换的强大工具。以下是 Matrix 类的一些关键用法: 1. 变换方法 setTranslate(float dx, float dy): 设置矩阵…

二 数据查询

1、实验目的 理解SQL成熟设计基本规范,熟练运用SQL语言实现数据基本查询,包括但表查询、分组统计查询和连接查询。 2、实验内容及要求 针对数据库设计各种单表查询SQL语句、分组统计查询语句;设计单个表针对自身的连接查询,设计…

Vue2:通过props给组件传数据

一、业务场景 我们在使用Vue组件时,常常会复用Vue组件,那么,问题来了,复用的时候,业务数据不相同,怎么办了? 这里我们就需要学习新的属性:props来实现这个功能。 这样,组…

在Windows上使用VScode阅读kernel源码

有一说一,在Windows上使用Source Inside阅读kernel源码真的很舒服,但是有时候带着轻薄本出去,又不想往轻薄本上安装很多的软件,就使用VS code临时阅读kernel源码。如果不能进行跳转,阅读kernel源码就很难受&#xff0c…

计算机缺失vcomp120.dll文件怎么办?总结多种解决方法分享

在使用电脑过程中,难免会遇到各种问题,其中vcomp120.dll丢失问题就是其中之一。这个问题可能会给用户带来诸多不便,导致某些应用程序无法正常运行。在这篇文章中,我们将详细介绍vcomp120.dll文件的重要性,以及遇到丢失…

基于yolov2深度学习网络的车辆行人检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .......................................................... load yolov2.mat% 加载训练好的…

李沐-《动手学深度学习》--03-注意力机制

一、注意力机制 1 . 注意力提示 1)框架 **随意:**跟随自己的想法的,自主的想法,例如query **不随意:**没有任何偏向的选择,例如 Keys 如何得到 k v q 2)Nadaraya-Watson核回归 就是一个so…

Studio 3T客户端连接Mongodb数据库服务

这里需要注意 一定要先开Studio 3T 到 创建连接时才开Mongodb服务 不然 Studio 3T 会找不到Mongodb服务 不知道这是不是 Studio 3T官方问题 期待解决吧 我们打开 Studio 3T 然后点击 Create a new connection 开始创建连接 新弹出的窗口中选择 Manually configure my connec…

新火种AI|小冰摊牌了!大模型已获国内备案,克隆人发布箭在弦上...

作者:小岩 编辑:彩云 2024年国内AI圈的第一个重磅消息已然来袭。 1月4日,小冰公司宣布,已于去年12月成功获得“小冰大模型”的国内备案。结合此前公司在日本研发的Rinna大模型,小冰方面称,公司已实现不同…

云卷云舒:【实战篇】云主机/虚拟机迁移

1. 简介 用户原有业务通过不同版本型号、不同操作系统的主机承载,形式上包括物理服务器、虚拟机、公有云主机等。随着业务不断扩张,需要将其业务云化转型,必须保证上云过程数据完整,业务平滑过度。 如果将所有业务系统都重新部署…

算法32:针对算法31货币问题进行扩展,并对从左往右模型进行总结

本算法是在算法31的基础之上进行推理总结的,因此,在看本章之前,必须先去了解算法31,否则会觉得莫名其妙。 算法31的推理过程: 如果 x y1 y2 y3 y4 y5 y6. x1 y2 y3 y4 y5 y6 那么 x y1 x1. 根据以…

欧洲编程语言四巨头

从左往右,依次是 尼克劳斯沃斯 (Niklaus Wirth),迪杰斯特拉(Edsger Dijkstra),霍尔(Tony Hoare) 尼克劳斯沃斯 (Niklaus Wirth) 瑞士人,一生发明了8种编程语言,其中最著…

【Python】Graphviz的安装和使用

graphviz包可以用来决策树可视化,只安装包之后直接import使用会报错,因为graphviz是一个要单独安装的软件。 下载路径:Download | Graphviz 有不同的版本,我这里用的是最新版 9.0版本安装之后可以选自动添加到环境变量——系统…

lazada越南站收款问题;lazada可以使用支付宝吗?-站斧浏览器

Lazada越南站收款问题 线上支付方式:Lazada越南本土店提供多种线上支付方式,以方便消费者完成购物支付。常见的线上支付方式包括信用卡支付、借记卡支付、电子钱包支付(如Momo、Zalo Pay等)以及银行转账等。商家可以根据自己的需…

【Java集合篇】HashMap的get方法是如何实现的?

HashMap的get方法是如何实现的 ✔️典型解析✔️拓展知识仓✔️如何避免HashMap get方法的哈希重✔️HashMap get方法的优缺点有哪些✔️HashMap get方法的是线程安全的吗✔️什么是ConcurrentHashMap✔️ConcurrentHashMap有哪些应用场景✔️ConcurrentHashMap的优缺点 ✔️源…

Day1Qt

1、实现登录窗口界面 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QIcon>//图标 #include <QLabel>//标签类 #include <QMovie>//动态类 #include <QLineEdit>//行编辑类 #include <QPushButton>…