从零入手人工智能(5)—— 决策树

1.前言

在上一篇文章《从零入手人工智能(4)—— 逻辑回归》中讲述了逻辑回归这个分类算法,今天我们的主角是决策树。决策树和逻辑回归这两种算法都属于分类算法,以下是决策树和逻辑回归的相同点

分类任务:两者都是用于分类任务的算法。无论是决策树还是逻辑回归,它们的目标都是根据输入的特征(或变量)来预测样本的类别。这两种算法都接受一组特征作为输入,并输出一个类别标签。

预测类别:它们都可以预测样本属于哪个类别。无论是二分类问题还是多分类问题,决策树和逻辑回归都能够进行建模和预测。

处理特征:两者都可以处理多种类型的特征,包括数值型特征和类别型特征。

模型评估:两者都可以使用相同的评估指标来评估模型的性能,如准确率、召回率、F1分数、AUC-ROC等。
虽然决策树和逻辑回归有上述相同点,但它在仍然存在差异。决策树和逻辑回归最大的差异在于它们的模型算法原理不同决策树基于树形结构进行决策,通过一系列规则对数据进行分类。而逻辑回归使用逻辑函数(如sigmoid函数)对输入特征进行建模,将线性模型的输出转换为概率值,然后根据概率值判断样本所属的类别。
由于决策树和逻辑回归有着诸多相似之处,所以本文就不额外过多的讲解,直接通过一个入门程序和一个进阶实战程序展示决策树
在这里插入图片描述

2.入门程序

入门程序利用make_classification方法自动生成一组X和Y,其中X有4个特征。使用DecisionTreeClassifier方法建立一个决策树模型,训练模型后,提取模型特征,最后使用 plot_tree 函数可视化决策树的结构。
程序如下

import numpy as np  
import matplotlib.pyplot as plt  
from sklearn.datasets import make_classification  
from sklearn.tree import DecisionTreeClassifier  
from sklearn.model_selection import train_test_split  # 生成分类数据集  
X, y = make_classification(n_samples=1000, n_features=4,  n_informative=2, n_redundant=0,  random_state=0, shuffle=False)  # 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 创建决策树分类器  
clf = DecisionTreeClassifier(random_state=42)  # 训练模型  
clf.fit(X_train, y_train)  # 获取特征重要性  
importances = clf.feature_importances_  
indices = np.argsort(importances)[::-1]  # 打印特征排名  
print("Feature ranking:")  for f in range(X.shape[1]):  print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))  # 绘制特征重要性  
plt.figure()  
plt.title("Feature importances")  
plt.bar(range(X.shape[1]), importances[indices], align="center")  
plt.xticks(range(X.shape[1]), [f"Feature {i+1}" for i in indices])  
plt.xlim([-1, X.shape[1]])  
plt.show()  # 使用 plot_tree 函数可视化决策树的结构  
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(14, 10), dpi=80)  
plot_tree(clf,   feature_names=['feature_{}'.format(i) for i in range(X.shape[1])],    class_names=['class_0', 'class_1'],  filled=True, rounded=True,  ax=axes)  
plt.show()

程序运行结果如下在这里插入图片描述
在这里插入图片描述

3.进阶实战

本实战程序的目的是:根据气象环境数据预测是否会下雨。利用数据表macau_weather.csv中的数据进行训练和测试。
(希望获取源码和测试数据的朋友请在评论区留言)

step1

读取macau_weather.csv中的数据,并可视化数据,根据可视化结果可知数据表中有以下数:

num、date、air_pressure、high_tem、aver_tem、low_tem、 humidity、sunlight_time 、wind_direction、wind_speed、rain_accum

其中rain_accum为目标值(标签:有雨、无雨),以下七个数据为特征变量:

air_pressure、high_tem、aver_tem、low_tem 、humidity、sunlight_time 、wind_direction、wind_speed

在这里插入图片描述

step2

数据表中的一共有426组数据(来源于426天的气象数据记录),检查每组数据是否完整,根据检查结果可知有0.7%的数据存在空缺
在这里插入图片描述

step3

将数据表中的rain_accum转换成1和0,0代表无雨1代表有雨。
在这里插入图片描述

step4

使用DecisionTreeClassifier方法建立决策树模型,利用训练集数据训练模型。
在这里插入图片描述

step5

利用模型和测试集数据,测试模型准确性,并可视化结果,根据可视化图标可知模型预测的准确性达到了87.1%。
在这里插入图片描述
在这里插入图片描述
希望获取源码和测试数据的朋友请在评论区留言

创作不易希望朋友们点赞,转发,评论,关注!
您的点赞,转发,评论,关注将是我持续更新的动力!
CSDN:https://blog.csdn.net/li_man_man_man
今日头条:https://www.toutiao.com/article/7149576260891443724

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

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

相关文章

椭圆的矩阵表示法

椭圆的矩阵表示法 flyfish 1. 标准几何表示法 标准几何表示法是通过椭圆的几何定义来表示的: x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1其中, a a a 是椭圆的长半轴长度, b b b 是椭圆的短半轴长度。 2.…

三十八篇:架构大师之路:探索软件设计的无限可能

架构大师之路:探索软件设计的无限可能 1. 引言:架构的艺术与科学 在软件工程的广阔天地中,系统架构不仅是设计的骨架,更是灵魂所在。它如同建筑师手中的蓝图,决定了系统的结构、性能、可维护性以及未来的扩展性。本节…

AWS-PatchAsgInstance自动化定时ASG组打补丁

问题 需要给AWS的EC2水平自动扩展组AutoScaling Group(ASG)中的EC2自动定期打补丁。 创建自动化运行IAM角色 找到创建角色入口页面,如下图: 开始创建Systems Manager自动化运行的IAM角色,如下图: 设置…

2023-2024 学年第二学期小学数学六年级期末质量检测模拟(制作:王胤皓)(90分钟)

word效果预览: 一、我会填 1. 1.\hspace{0.5em} 1. 一个多位数,亿位上是次小的素数,千位上是最小的质数的立方,十万位是 10 10 10 和 15 15 15 的最大公约数,万位是最小的合数,十位上的数既不是质数也…

体验了一下AI生产3D模型有感

我的实验路子是想试试能不能帮我建一下实物模型 SO 我选择了一个成都环球中心的网图 但是生成的结果掺不忍睹,但是看demo来看,似乎如果你能给出一张干净的提示图片,他还是能做出一些东西的 这里我延申的思考是这个物体他如果没看过背面&…

大型企业网络DHCP服务器配置安装实践@FreeBSD

企业需求 需要为企业里的机器配置一台DHCP服务器。因为光猫提供DHCP服务的能力很差,多机器dhcp多机器NAT拓扑方式机器一多就卡顿。使用一台路由器来进行子网络的dhcp和NAT服务,分担光猫负载,但是还有一部分机器需要放到光猫网络,…

torchinfo这个包中的summary真的很好用

1.安装直接使用 pip 进行安装即可: pip install torchinfo 2.导入该模块 from torchinfo import summary 3.使用模块 summary(model)#这里的model是你自己的model,可以添加参数进去 4.效果图: 第一个图片是直接打印model吗,…

SpringBoot+ENC实现密钥加密及使用原理

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: SpringBootENC实现密钥加密及使用原理 ⏱️ 创作时间: 202…

K8s部署高可用Jenkins

小伙伴们大家好呀!断更了近一个月,XiXi去学习了一下K8s和Jenkins的相关技术。学习内容有些庞杂,近一个月的时间里我只学会了一些皮毛,更多的内容还需要后面不断学习,不断积累。最主要的是云主机真得很贵,为…

注意 llamaIndex 中 Chroma 的坑!

llamaIndex 做索引是默认存在内存中,由于索引需要通过网络调用 API,而且索引是比较耗时的操作,为了避免每次都进行索引,使用向量数据库进行 Embedding 存储以提高效率。首先将 Document 解析成 Node,索引时调用 Embedd…

一、系统学习微服务遇到的问题集合

1、启动了nacos服务&#xff0c;没有在注册列表 应该是版本问题 Alibaba-nacos版本 nacos-文档 Spring Cloud Alibaba-中文 Spring-Cloud-Alibaba-英文 Spring-Cloud-Gateway 写的很好的一篇文章 在Spring initial上面配置 start.aliyun.com 重新下载 < 2、 No Feign…

力扣SQL50 求关注者的数量 分组计数

Problem: 1729. 求关注者的数量 Code select user_id, count(1) followers_count from Followers group by user_id order by user_id;

运算放大器(运放)低通滤波反相放大器电路和积分器电路

低通滤波反相放大器电路 运放积分器电路请访问下行链接 运算放大器(运放)积分器电路 设计目标 输入ViMin输入ViMax输出VoMin输出VoMaxBW&#xff1a;fp电源Vee电源Vcc–0.1V0.1V–2V2V2kHz–2.5V2.5V 设计说明 这款可调式低通反相放大器电路可将信号电平放大 26dB 或 20V/…

全面理解-Flutter(万字长文,深度解析)

1、Web 性能差&#xff0c;跟原生 App 存在肉眼可见的差距&#xff1b; 2、React Native 跟 Web 相比&#xff0c;支持的能力非常有限&#xff0c;特定长场景问题&#xff0c;需要三端团队一个一个处理&#xff1b; 3、Web 浏览器的安卓碎片化严重&#xff08;感谢 X5&#x…

【C++算法】——高精度(加,减,乘,除)

前言 高精度算法就是为了去解决一些比较大的数&#xff0c;这些数大到long long都存不下。&#xff0c;这里的主要思想就是用字符串来存。 下面的内容有很多用到c的容器&#xff0c;不明白的可以先去学习stl。 一 高精度加法 首先第一步就是去模拟我们自己写的加法&#xff…

Nikto一键扫描Web服务器(KALI工具系列三十)

目录 1、KALI LINUX 简介 2、Nikto工具简介 3、信息收集 3.1 目标IP&#xff08;服务器) 3.2kali的IP 4、操作实例 4.1 基本扫描 4.2 扫描特定端口 4.3 保存扫描结果 4.4 指定保存格式 4.5 连接尝试 4.6 仅扫描文件上传 5、总结 1、KALI LINUX 简介 Kali Linux 是一…

2024最新版:C++用Vcpkg搭配VS2022安装matplotlib-cpp库

matplotlib-cpp是一个用于在C中使用matplotlib绘图库的头文件库。它提供了一个简单的接口&#xff0c;使得在C中创建和显示图形变得更加容易。这个库的灵感来自于Python的matplotlib库&#xff0c;它使得在C中进行数据可视化变得更加便捷。 matplotlib-cpp允许在C中使用类似Py…

CTFHUB-SSRF-端口扫描

已经提示我们需要扫描8000~9000的端口 ?urlhttp://127.0.0.1:8000/flag.php 访问用burp抓包爆破 通过Burp扫描8000-9000端口开放的web服务&#xff0c;发现8718开放web服务

QML 列表,图片展示(一)

文章目录 1.QML 列表&#xff0c;图片展示效果图2.项目基本说明3.项目详解3.1界面显示部分3.2 网络部分 4.源代码5.flickr图片查询链接&#xff0c;后面我们将调整代码&#xff0c;获取更多图片 1.QML 列表&#xff0c;图片展示效果图 2.项目基本说明 该项目来自Qt示例程序 Ph…