【决策树-鸢尾花分类】

决策树算法简介

决策树是一种基于树状结构的分类与回归算法。它通过对数据集进行递归分割,将样本划分为多个类别或者回归值。决策树算法的核心思想是通过构建树来对数据进行划分,从而实现对未知样本的预测。

决策树的构建过程

决策树的构建过程包括以下步骤:

  1. 选择特征:从数据集中选择一个最优特征,使得根据该特征的取值能够将数据划分为最具有区分性的子集。

  2. 划分数据集:根据选定的特征将数据集分割成不同的子集,每个子集对应树中的一个分支。

  3. 递归构建:对每个子集递归地应用上述步骤,直到满足终止条件,如子集中的样本属于同一类别或达到预定深度。

  4. 决策节点:将特征选择和数据集划分过程映射到决策树中的节点。

  5. 叶节点:表示分类结果的节点,叶节点对应于某个类别或者回归值。

决策树的优点

决策树算法具有以下优点:

  1. 易于理解和解释:决策树的构建过程可以直观地表示,易于理解和解释,适用于数据探索和推断分析。

  2. 处理多类型数据:决策树可以处理离散型和连续型特征,适用于多类型数据。

  3. 能处理缺失值:在构建决策树时,可以处理含有缺失值的数据。

  4. 高效处理大数据:决策树算法的时间复杂度较低,对于大规模数据集也能得到较高的效率。

决策树的缺点

决策树算法也有一些缺点:

  1. 容易过拟合:决策树容易生成复杂的模型,导致过拟合问题,需要进行剪枝等处理。

  2. 不稳定性:数据的细微变化可能导致生成不同的决策树,算法不稳定。

决策树的应用场景

决策树算法在许多领域都有广泛的应用,包括但不限于:

  1. 分类问题:决策树用于解决分类问题,如垃圾邮件识别、疾病诊断等。

  2. 回归问题:对于回归问题,决策树可以预测连续性输出,如房价预测、销售量预测等。

  3. 特征选择:决策树可用于选择重要特征,帮助简化模型。

示例代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score# 加载数据集
data = load_iris()
X, y = data.data, data.target# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y)# 创建决策树分类器
clf = DecisionTreeClassifier()# 训练模型
clf.fit(X_train, y_train)# 预测
y_pred = clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)# 直接对比预测值和真实值
print(y_pred == y_test)# 可视化决策树
from sklearn.tree import export_graphviz
import graphvizdot_data = export_graphviz(clf, out_file=None,feature_names=data.feature_names,class_names=data.target_names,filled=True, rounded=True,special_characters=True)
graph = graphviz.Source(dot_data)
graph.render("iris")
graph.view()# 可视化混淆矩阵
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)# 可视化混淆矩阵
sns.heatmap(cm, annot=True)
plt.show()# 可视化分类报告
from sklearn.metrics import classification_report# 计算分类报告
report = classification_report(y_test, y_pred)# 打印分类报告
print(report)# 可视化特征重要性
import matplotlib.pyplot as plt
import numpy as np# 获取特征重要性
importances = clf.feature_importances_# 获取特征名称
feature_names = data.feature_names# 将特征重要性标准化
importances = importances / np.max(importances)# 将特征名称和特征重要性组合在一起
feature_names = np.array(feature_names)
feature_importances = np.array(importances)
feature_names_importances = np.vstack((feature_names, feature_importances))# 将特征重要性排序
feature_names_importances = feature_names_importances[:, feature_names_importances[1, :].argsort()[::-1]]# 绘制条形图
plt.bar(feature_names_importances[0, :], feature_names_importances[1, :].astype(float))
plt.show()



总结

决策树算法是一种强大且灵活的机器学习算法,适用于分类和回归任务。它具有易于理解、处理多类型数据以及高效处理大数据等优点。然而,需要注意过拟合和不稳定性等缺点。

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

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

相关文章

数据结构:单链表的实现(C语言)

个人主页 : 水月梦镜花 个人专栏 : 《C语言》 《数据结构》 文章目录 前言一、单链表实现思路和图解1.节点的定义(SListNode)2.申请一个节点(BuySListNode)3.单链表打印(SListPrint)4.单链表尾插(SListPushBack)5.单链表的头插(SListPushFront)6.单链表的…

【目标检测】基于yolov5的水下垃圾检测(附代码和数据集,7684张图片)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就…

Spring Boot概述:构建稳定、高效的分布式应用

目录 ✨正文 ✨特性 ✨与spring的关系 ✨Spring Cloud的关系 ✨总结 ✨正文 Spring Boot是一个备受欢迎的Java开发框架,旨在简化和加速Spring应用程序的开发和部署。作为Spring生态系统的一部分,Spring Boot通过提供合理的默认配置和开箱即用的功能…

行云管家荣获CFS第十二届财经峰会 “2023产品科技创新奖”

7月26日至27日,CFS第十二届财经峰会暨2023可持续商业大会在京盛大召开。峰会主题为“激活高质量发展澎湃活力”,超1000位政商领袖、专家学者、企业及媒体代表出席了本次盛会,共同分享新技术新产品新趋势、研判全球新挑战与新变局下企业的机遇…

【方法】PDF可以转换成Word文档吗?如何操作?

很多人喜欢在工作中使用PDF,因为PDF格式可以准确地保留文档的原始格式,比如字体、图像、布局和颜色等。 但如果编辑文档的话,PDF还是没有Word文档方便。那可以将PDF转换成Word格式,再来编辑吗?如何操作呢?…

接口自动化测试平台

下载了大神的EasyTest项目demo修改了下<https://testerhome.com/topics/12648 原地址>。也有看另一位大神的HttpRunnerManager<https://github.com/HttpRunner/HttpRunnerManager 原地址>&#xff0c;由于水平有限&#xff0c;感觉有点复杂~~~ 【整整200集】超超超…

Java:Java程序通过执行系统命令调用Python脚本

本文实现功能&#xff1a;Java程序调用Python脚本 Python脚本 import sysdef add(x, y):return x yif __name__ "__main__":print(add(int(sys.argv[1]), int(sys.argv[2])))直接执行 $ python math.py 1 2 3Java程序调用Python脚本 package io.github.mouday.…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试

1.简介 Fiddler有个强大的功能&#xff0c;可以修改发送到服务器的数据包&#xff0c;但是修改前需要拦截&#xff0c;即设置断点。设置断点后&#xff0c;开始拦截接下来所有网页&#xff0c;直到取消断点。这个功能可以在数据包发送之前&#xff0c;修改请求参数&#xff1b…

JVM复习(史上最全!!!)

一、JDK、JRE、JVM的区别 JDK: 全称Java Development Kit&#xff0c;是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个Java开发的核心。 JRE: JRE&#xff0c;全称Java Runtime Environment&#xff0c;是指Java的运行环境&…

c++通过自然语言处理技术分析语音信号音高

对于语音信号的音高分析&#xff0c;可以使用基频提取技术。基频是指一个声音周期的重复率&#xff0c;也就是一个声音波形中最长的周期。 通常情况下&#xff0c;人的声音基频范围是85Hz到255Hz。根据语音信号的基频可以推断出其音高。 C中可以使用数字信号处理库或语音处理库…

开放麒麟1.0发布一个月后,到底怎么样?另一款操作系统引发热议

具有里程碑意义 7月5日&#xff0c;国产首个开源桌面操作系统“开放麒麟1.0”正式发布。 标志着我国拥有了操作系统组件自主选型、操作系统独立构建的能力&#xff0c;填补了我国在这一领域的空白。 举国欢庆&#xff0c;算的上是里程碑意义了&#xff01; 发布后用着如何&a…

【业务功能篇57】Springboot + Spring Security 权限管理 【上篇】

4.权限管理模块开发 4.1 权限管理概述 4.1.1 权限管理的意义 后台管理系统中&#xff0c;通常需要控制不同的登录用户可以操作的内容。权限管理用于管理系统资源&#xff0c;分配用户菜单、资源权限&#xff0c;以及验证用户是否有访问资源权限。 4.1.2 RBAC权限设计模型 …

redis的并发安全问题:redis的事务VSLua脚本

redis为什么会发生并发安全问题&#xff1f; 在redis中&#xff0c;处理的数据都在内存中&#xff0c;数据操作效率极高&#xff0c;单线程的情况下&#xff0c;qps轻松破10w。反而在使用多线程时&#xff0c;为了保证线程安全&#xff0c;采用了一些同步机制&#xff0c;以及多…

windows中注册redis服务启动时报1067错误

注册完redis服务&#xff0c;打开计算机 服务时确实有redis服务存在&#xff0c;但是点击启动时却报1067错误&#xff0c;而命令行用redis-server.exe redis.windows.conf 命令却也可以启动 查看6379的端口也没有被占用&#xff08;netstat -ano | findstr :6379&#xff09; …

Mac 定时重启 TouchBar 脚本(缓解闪烁问题)

背景 Mac 笔记本 TouchBar 是真的脆啊&#xff0c;合盖使用一段时间就废了&#xff0c;右侧一直闪烁简直亮瞎眼 &#x1f602; 经过观察&#xff0c;总结出闪烁规律如下&#xff1a; 工作状态&#xff1a;不断操作电脑时&#xff0c;触控栏处于工作状态&#xff0c;几乎不闪…

第14届蓝桥杯国赛题解

T1. 八进制回文数 #include <iostream> typedef long long LL; using namespace std; int a[30]; //转八进制 LL f(LL m) {LL sum 0, n 0;while(m) {a[ n] m % 8;m / 8;}for(int i n; i > 1; i --) sum sum * 10 a[i];return sum; } //数字反转 LL r(LL m) {LL…

Apipost教程?一篇文章玩转Apipost

你是否经常遇到接口开发过程中的各种问题&#xff1f;或许你曾为接口测试与调试的繁琐流程而烦恼。不要担心&#xff01;今天我将向大家介绍一款功能强大、易于上手的接口测试工具——Apipost&#xff0c;并带你深入了解如何玩转它&#xff0c;轻松实现接口测试与调试。 什么是…

思科认证 | CCIE考过了,证书编号怎么查?

考CCIE证书是一个很辛苦的过程&#xff0c;你努力考证的最终目的就是为了拿证&#xff0c;有了CCIE证书你才能证明你自己的技术能力。 那么如何查询CCIE证书呢&#xff1f;看这里。 01 如何查询CCIE证书 1. Cisco官方认证查询系统 Cisco官方网站提供了一个在线认证查询系统&a…

深入浅出Pytorch函数——torch.no_grad

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 禁用梯度计算的上下文管理器。当我们确信不会调用Tensor.backward()时&#xff0c;禁用梯度计算对推理很有用。它将减少计算的内存消耗&#xff0c;否则我们需要设置requires_gradTrue。在这种模式下&#xff0c;即使输入的…

1992-2021年全国及31省对外开放度测算数据含原始数据和计算过程(无缺失)

1992-2021年全国及31省对外开放度测算数据含原始数据和计算过程&#xff08;无缺失&#xff09; 1、时间&#xff1a;1992-2021年 2、范围&#xff1a;全国及31省 3、指标&#xff1a;进出口总额、国内生产总值、年均汇率 4、计算方法&#xff1a;对外开放度进出口总额/GDP…