【python】基于决策树的语音识别

目录

引言

决策树的主要特点

决策树的构建过程

决策树的应用

数据集

代码实现


引言

决策树(Decision Tree)是一种常用的分类与回归方法,其中最为人所知的是其在分类问题上的应用。决策树模型呈树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,每个叶节点代表一种分类结果。它使用递归的方法将数据集划分成若干个子集,从而构建出一棵决策树。

决策树的主要特点

  1. 易于理解和解释:决策树模型可以很容易地通过图形化展示,使得非专业人士也能理解其决策过程。
  2. 可以处理非线性关系:决策树可以自然地处理特征间的非线性关系,不需要进行特征之间的转换。
  3. 能够处理多种数据类型:既可以处理数值型数据,也可以处理类别型数据。
  4. 对异常值不敏感:决策树模型对数据的异常值不敏感,能够很好地处理含有噪声的数据集。
  5. 容易产生过拟合:特别是当决策树过于复杂时,它可能会学习到训练数据中的噪声和异常值,导致在测试集上表现不佳。

决策树的构建过程

决策树的构建主要基于贪心算法,它遵循“分而治之”的原则,通过不断地选择最优特征对数据集进行划分,直到满足某个停止条件(如:所有样本都属于同一类别,或者没有更多的特征可供选择等)。

构建决策树的关键步骤包括:

  1. 特征选择:选择最优特征对数据集进行划分。常用的特征选择准则有信息增益(ID3算法)、信息增益比(C4.5算法)和基尼指数(CART算法)。
  2. 决策树生成:根据选定的特征划分数据集,并对每个子集递归地进行上述过程,直到满足停止条件。
  3. 决策树剪枝:由于决策树容易过拟合,通常需要通过剪枝来简化决策树,以提高其在测试集上的表现。剪枝包括预剪枝和后剪枝两种方法。

决策树的应用

决策树被广泛应用于各种领域,包括金融、医疗、市场营销、生物信息学等。例如,在金融领域,决策树可以用于信用评分、欺诈检测等;在医疗领域,决策树可以用于疾病诊断、治疗方案推荐等。

总的来说,决策树是一种简单而强大的机器学习算法,它能够以直观的方式展现数据的分类过程,并且具有良好的解释性和泛化能力

数据集

每条训练数据含有20个刻画声音特点的变量。数据还含有一个性 别标签,表示声音来自男性还是女性。

代码实现

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score
from sklearn.tree import export_graphviz
import graphviz
import matplotlib.pyplot as plt
from sklearn import tree# 1. 获取voice.csv表中数据
data = pd.read_csv('D:/voice.csv')# 将标签转换为0和1
data['label'] = data['label'].map({'male': 1, 'female': 0})# 2. 划分数据集
X = data.drop('label', axis=1)  # 特征
y = data['label']  # 标签
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 调用sklearn库中的决策树分类模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)# 4. 计算决策树分类模型的准确率等度量指标
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
print("准确率:", accuracy)
print("精确率:", precision)
print("召回率:", recall)# 5. 显示构建的决策树
dot_data = export_graphviz(clf, out_file=None, feature_names=X.columns, filled=True)
graph = graphviz.Source(dot_data)# 使用matplotlib绘制决策树
fig, ax = plt.subplots(figsize=(15, 10))
tree.plot_tree(clf, filled=True, feature_names=X.columns, ax=ax)

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

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

相关文章

python数据可视化(5)——绘制饼图

课程学习来源:b站up:【蚂蚁学python】 【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接:【链接】】 Python绘制饼图分析北京天气 饼图,是一个划分为几个扇形的圆形统计图表&#xff…

基于全国产复旦微JFM7K325T+ARM人工智能数据处理平台

复旦微可以配合的ARM平台有:RK3588/TI AM62X/ NXP IMX.8P/飞腾FT2000等。 产品概述 基于PCIE总线架构的高性能数据预处理FMC载板,板卡采用复旦微的JFM7K325T FPGA作为实时处理器,实现各个接口之间的互联。该板卡可以实现100%国产化。 板卡具…

华为模拟器防火墙配置实验(二)

一.实验拓扑 二.实验要求 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许…

240712_昇思学习打卡-Day24-LSTM+CRF序列标注(3)

240712_昇思学习打卡-Day24-LSTMCRF序列标注(3) 今天做LSTMCRF序列标注第三部分,同样,仅作简单记录及注释,最近确实太忙了。 Viterbi算法 在完成前向训练部分后,需要实现解码部分。这里我们选择适合求解…

从“Hello,World”谈起(C++入门)

前言 c的发展史及c能干什么不能干什么不是我们今天的重点,不在这里展开,有兴趣的朋友可以自行查阅相关资料。今天我们主要是围绕c的入门程序,写一个“hello,world”,并且围绕这个入门程序简单介绍一下c和c的一些语法&…

C++ Qt 自制开源科学计算器

C Qt 自制开源科学计算器 项目地址 软件下载地址 目录 0. 效果预览1. 数据库准备2. 按键&快捷键说明3. 颜色切换功能(初版)4. 未来开发展望5. 联系邮箱 0. 效果预览 普通计算模式效果如下: 科学计算模式效果如下: 更具体的功能演示视频见如下链接…

stm32入门-----初识stm32

目录 前言 ARM stm32 1.stm32家族 2.stm32的外设资源 3.命名规则 4.系统结构 ​编辑 5.引脚定义 6.启动配置 7.STM32F103C8T6芯片 8.STM32F103C8T6芯片原理图与最小系统电路 前言 已经很久没跟新了,上次发文的时候是好几个月之前了,现在我是想去…

论文分享|NeurIPS2022‘华盛顿大学|俄罗斯套娃表示学习(OpenAI使用的文本表示学习技术)

论文题目:Matryoshka Representation Learning 来源:NeurIPS2022/华盛顿大学谷歌 方向:表示学习 开源地址:https://github.com/RAIVNLab/MRL 摘要 学习表征对于现代机器学习很重要,广泛用于很多下游任务。大多数情…

java配置nginx网络安全,防止国外ip访问,自动添加黑名单,需手动重新加载nginx

通过访问日志自动添加国外ip黑名单 创建一个类,自己添加一个main启动类即可测试 import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; import org.json.JSONObject; import org.sp…

面试经验之谈

优质博文:IT-BLOG-CN ​通常面试官会把每一轮面试分为三个环节:① 行为面试 ② 技术面试 ③ 应聘者提问 行为面试环节 面试开始的5~10分钟通常是行为面试的时间,面试官会参照简历和你的自我介绍了解应聘者的过往经验和项目经历。由于面试官…

nodejs模板引擎(一)

在 Node.js 中使用模板引擎可以让您更轻松地生成动态 HTML 页面,通过将静态模板与动态数据结合,您可以创建可维护且易于扩展的 Web 应用程序。以下是一个使用 Express 框架和 EJS 模板引擎的基本示例: 安装必要的依赖: 首先&#…

分享浏览器被hao123网页劫持,去除劫持的方式

昨天看python相关的自动化工作代码时,发现谷歌浏览器被hao123劫持了,把那些程序删了也不管用 方法1:删除hao123注册表,这个方式不太好用,会找不到注册表 方法2:看浏览器快捷方式的属性页面,一…

【C++】入门基础(命名空间、缺省参数、函数重载)

目录 一.命名空间:namespace 1.namespace的价值 2.namespace的定义 3.namespace的使用方法 3.1 域解析运算符:: 3.2 using展开 3.3 using域解析运算符 二.输入输出 三.缺省参数 四.函数重载 1.参数类型不同 2.参数个数不同 3.参数顺序不同 一.命名空间&…

APP专项测试之网络测试

背景 当前app网络环境比较复杂,越来越多的公共wifi,网络制式有2G、3G、4G网络,会对用户使用app造成一定影响;当前app使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要; 网络正…

链路追踪系列-02.演示zipkin

当本机启动docker es zipkinServer之后: 启动3个项目:先eureka-server,再 PaymentMain8001,… 浏览器打开:http://localhost:9001/consumer/payment/zipkin consumer代码 : provider: 此时查询es:

3-2 多层感知机的从零开始实现

import torch from torch import nn from d2l import torch as d2lbatch_size 256 # 批量大小为256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size) # load进来训练集和测试集初始化模型参数 回想一下,Fashion-MNIST中的每个图像由 28 28 784…

学习C++,应该循序渐进的看哪些书?

学习C是一个循序渐进的过程,需要根据自己的基础和目标来选择合适的书籍。以下是一个推荐的学习路径,包含了从入门到进阶的书籍: 1. 入门阶段 《C Primer Plus 第6版 中文版》 推荐理由:这本书同样适合C零基础的学习者&#xff0…

[CISCN2018]2ex

啊!好恶心的mips寄存器 好多IDA都查不到,这寄存器~! fuck! 但是这种寄存器一般的题都不难 这道题就是 我用平常的方法,没找到 左边函数一个一个点 看见这里0X3F base64 密文呢? 我giao 外面的txt文件里面 脚本 import base64 import string# 定义你的自定义字符集 st…

聊点基础---Java和.NET开发技术异同全方位分析

1. C#语言基础 1.1 C#语法概览 欢迎来到C#的世界!对于刚从Java转过来的开发者来说,你会发现C#和Java有很多相似之处,但C#也有其独特的魅力和强大之处。让我们一起来探索C#的基本语法,并比较一下与Java的异同。 程序结构 C#程序…

美团收银Android一面凉经(2024)

美团收银Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《美团收银Android一面凉经(2024)》。 应聘岗位: 美团餐饮PaaS平台Android开发工程师…