当前位置: 首页 > news >正文

从零入手人工智能(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

相关文章:

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

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

go语言:两协程并发交替打印数字和字母(代码逐行注释)

要求: 并发两协程交替打印数字和字母。一个协程打印数字,一个协程打印字母。 输出: 12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728 思路: 两个 channel 控制两个协程进行交替打印。sync.WaitG…...

TWM论文阅读笔记

这是ICLR2023的一篇world model论文,用transformer来做世界模型的sequence prediction。文章贡献是transformer-based world model(不同于以往的如transdreamer的world model,本文的transformer-based world model在inference 的时候可以丢掉…...

探索ChatTTS项目:高效的文字转语音解决方案

文章目录 📖 介绍 📖📒 ChatTTS 📒📝 项目介绍📝 项目亮点📝 UI 🎈 项目地址 🎈 📖 介绍 📖 在AI技术迅速发展的今天,文本到语音&…...

[Django学习]Q对象实现多字段模糊搜索

一、应用场景 假设我们现在有一个客房系统,前端界面上展示出来了所有客房的所有信息。用户通过客房的价格、面积、人数等对客房进行模糊搜索,如检索出价格在50到100元之间的客房,同时检索面积在20平方米到30平方米之间的客房,此时后端可以借助…...

transdreamer 论文阅读笔记

这篇文章是对dreamer系列的改进,是一篇world model 的论文改进点在于,dreamer用的是循环神经网络,本文想把它改成transformer,并且希望能利用transformer实现并行训练。改成transformer的话有个地方要改掉,dreamer用ht…...

AIGC技术的发展现状与未来趋势探讨

AIGC技术的发展现状与未来趋势探讨 随着人工智能(AI)技术的迅猛发展,AI生成内容(AI-Generated Content,AIGC)成为了一项颠覆性的技术,它能够自动生成文本、图像、音频和视频等多种内容。本文将…...

Postman Postman接口测试工具使用简介

Postman这个接口测试工具的使用做个简单的介绍,仅供参考。 插件安装 1)下载并安装chrome浏览器 2)如下 软件使用说明...

Java开发笔记Ⅱ(Jsoup爬虫)

Jsoup 爬虫 Java 也能写爬虫!!! Jsoup重要对象如下: Document:文档对象,每个html页面都是一个Document对象 Element:元素对象,一个Document对象里有多个Element对象 Node&#…...

一五三、MAC 安装MongoDB可视化工具连接

若没有安装brew包管理工具,在命令行输入安装命令 /bin/bash -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”上面步骤安装完成后,开始安装MongoDB,输入安装命令: brew tap mongodb/brewbrew u…...

ULTRAINTERACT 数据集与 EURUS 模型:推动开源大型语言模型在推理领域的新进展

在人工智能的浪潮中,大型语言模型(LLMs)已经成为推动自然语言处理技术发展的关键力量。它们在理解、生成语言以及执行复杂任务方面展现出了巨大的潜力。然而,尽管在特定领域内取得了显著进展,现有的开源LLMs在处理多样…...

【leetcode刷题】面试经典150题 , 27. 移除元素

leetcode刷题 面试经典150 27. 移除元素 难度:简单 文章目录 一、题目内容二、自己实现代码2.1 方法一:直接硬找2.1.1 实现思路2.1.2 实现代码2.1.3 结果分析 2.2 方法二:排序整体删除再补充2.1.1 实现思路2.1.2 实现代码2.1.3 结果分析 三、…...

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇PTH哈希PTT票据PTK密匙Kerberoast攻击点TGTNTLM爆破

红队内网攻防渗透 1. 内网横向移动1.1 首要知识点1.2 PTH1.2.1 利用思路第1种:利用直接的Hash传递1.2.1.1、Mimikatz1.2.2 利用思路第2种:利用hash转成ptt传递1.2.3 利用思路第3种:利用hash进行暴力猜解明文1.2.4 利用思路第4种:修改注册表重启进行获取明文1.3 PTT1.3.1、漏…...

springBoot不同module之间互相依赖

在 Spring Boot 多模块项目中,不同模块之间的依赖通常是通过 Maven 或 Gradle 来管理的。以下是一个示例结构和如何设置这些依赖的示例。 项目结构 假设我们有一个多模块的 Spring Boot 项目,结构如下: my-springboot-project │ ├── p…...

[modern c++] 类型萃取 type_traits

前言&#xff1a; #include <type_traits> type_traits 又叫类型萃取&#xff0c;是一个在编译阶段用于进行 类型判断/类型变更 的库&#xff0c;在c11中引入。因为其工作阶段是在编译阶段&#xff0c;因此被大量应用在模板编程中&#xff0c;同时也可以结合 constexpr…...

函数模板和类模板的区别

函数模板和类模板在C中都是重要的泛型编程工具&#xff0c;但它们之间存在一些显著的区别。以下是它们之间的主要区别&#xff1a; 实例化方式&#xff1a; 函数模板&#xff1a;隐式实例化。当函数模板被调用时&#xff0c;编译器会根据传递给它的参数类型自动推断出模板参数…...

ChatGPT 提示词技巧一本速通

目录 一、基本术语 二、提示词设计的基本原则 三、书写技巧 2.1 赋予角色 2.2 使用分隔符 2.2 结构化输出 2.3 指定步骤 2.4 提供示例 2.5 指定长度 2.6 使用或引用参考文本 2.7 提示模型进行自我判断 2.8 思考问题的解决过程 ​编辑 2.10 询问是否有遗漏 2.11 …...

【windows解压】解压文件名乱码

windows解压&#xff0c;文件名乱码但内容正常。 我也不知道什么时候设置出的问题。。。换了解压工具也没用&#xff0c;后来是这样解决的。 目录 1.环境和工具 2.打开【控制面板】 3.点击【时钟和区域】 4.选择【区域】 5.【管理】中【更改系统区域设置】 6.选择并确定…...

使用Flink CDC实时监控MySQL数据库变更

在现代数据架构中&#xff0c;实时数据处理变得越来越重要。Flink CDC&#xff08;Change Data Capture&#xff09;是一种强大的工具&#xff0c;可以帮助我们实时捕获数据库的变更&#xff0c;并进行处理。本文将介绍如何使用Flink CDC从MySQL数据库中读取变更数据&#xff0…...

学生课程信息管理系统

摘 要 目前&#xff0c;随着科学经济的不断发展&#xff0c;高校规模不断扩大&#xff0c;所招收的学生人数越来越 多&#xff1b;所开设的课程也越来越多。随之而来的是高校需要管理更多的事务。对于日益增 长的学生相关专业的课程也在不断增多&#xff0c;高校对其管理具有一…...

Umi-OCR:完全免费开源的离线OCR神器,3分钟快速上手文字识别

Umi-OCR&#xff1a;完全免费开源的离线OCR神器&#xff0c;3分钟快速上手文字识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维…...

从零到一:Android Studio集成Uniapp离线SDK打包实战

1. 环境准备&#xff1a;工具选择与版本匹配 第一次接触Uniapp离线打包时&#xff0c;最让我头疼的就是工具版本匹配问题。记得去年接手一个混合开发项目时&#xff0c;因为HBuilderX和SDK版本不兼容&#xff0c;整整浪费了两天时间排查问题。为了避免大家重蹈覆辙&#xff0c…...

3步实现专业级AI换脸:roop-unleashed创新方案指南

3步实现专业级AI换脸&#xff1a;roop-unleashed创新方案指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 在数字创意飞速发展的今天&#xff0c;AI换脸…...

完整实战指南:使用N_m3u8DL-RE高效解决流媒体下载难题

完整实战指南&#xff1a;使用N_m3u8DL-RE高效解决流媒体下载难题 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …...

如何3步获取百度网盘真实下载地址实现满速下载

如何3步获取百度网盘真实下载地址实现满速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾被百度网盘的非会员下载速度困扰&#xff1f;当下载重要的工作文件、学…...

Lua-RTOS-ESP32:用脚本语言快速开发物联网硬件的实践指南

1. 项目概述&#xff1a;当Lua遇上RTOS&#xff0c;在ESP32上构建轻量级物联网开发新范式如果你是一名嵌入式开发者&#xff0c;或者对物联网&#xff08;IoT&#xff09;设备编程感兴趣&#xff0c;那么你一定对ESP32这颗明星芯片不陌生。它凭借强大的双核处理能力、丰富的无线…...

碳排放混合时间窗集装箱运输调度【附算法】

✨ 长期致力于集装箱运输VRP、混合时间窗、碳排放、多目标优化、NSGA-Ⅱ、蚁群算法研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;经济性与紧急性双目…...

大气层系统深度解析:构建Switch的六层数字防护体系

大气层系统深度解析&#xff1a;构建Switch的六层数字防护体系 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 在Nintendo Switch的定制固件生态中&#xff0c;Atmosphere&#xff08;大气…...

Arm CoreLink PCK-600电源管理套件解析与应用实践

1. Arm CoreLink PCK-600电源控制套件概述在现代SoC设计中&#xff0c;电源管理已经成为一个关键的技术挑战。随着移动设备和物联网应用的普及&#xff0c;如何在保证性能的同时最大限度地降低功耗&#xff0c;成为芯片设计者面临的核心问题。Arm CoreLink PCK-600电源控制套件…...

CursorTouch/Web-Use:用JavaScript在桌面端模拟移动端触摸交互

1. 项目概述&#xff1a;当光标变成你的手指你有没有想过&#xff0c;在电脑上浏览网页时&#xff0c;如果能像在手机上那样&#xff0c;直接用手指滑动、点击、缩放&#xff0c;体验会不会更流畅&#xff1f;尤其是在处理一些需要精细操作或快速浏览长文档的场景时&#xff0c…...