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

决策树——基于乳腺癌数据集与cpu数据集实现

决策树——乳腺癌数据实现

4.1 训练决策树模型,并计算测试集的准确率

1. 读入数据

from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import numpy as np
import matplotlib.pyplot as plt
biopsy=datasets.load_breast_cancer() #数据集是一个字典
X=biopsy['data']
Y=biopsy['target']
X_train,X_test,Y_train,Y_test\=train_test_split(X,Y,random_state=14) #划分为训练集和测试集
#2. 决策树回归模型
clf=DecisionTreeClassifier(random_state=14)
clf.fit(X_train,Y_train)
Y_test_pred_onetree=clf.predict(X_test)
accuracy_onetree=np.mean(Y_test_pred_onetree==Y_test)*100
print("The test accuracy is {:.1f}%".format(accuracy_onetree))
#93.0%
def show_table(y_true,y_pred):from sklearn.metrics import confusion_matriximport numpy as npimport pandas as pdmatrix=confusion_matrix(y_true,y_pred)level=np.unique(y_true).tolist()Index=['True_'+str(content) for content in level]columns=['pred_'+str(content) for content in level]return(pd.DataFrame(matrix,index=Index,columns=columns))
confusion_matrix(Y_test,Y_test_pred_onetree)
The test accuracy is 93.0%array([[46,  7],[ 3, 87]], dtype=int64)
show_table(Y_test,Y_test_pred_onetree)
pred_0pred_1
True_0467
True_1387

4.2 Bagging算法,集成学习

Bagging(Bootstrap Aggregating)算法是一种集成学习方法,通过结合多个模型的预测结果来提高整体模型的性能和稳定性。其基本思想是通过对原始数据集进行多次有放回的随机抽样,生成多个不同的子数据集,并在每个子数据集上训练一个基模型。最终的预测结果通过对所有基模型的预测结果进行平均(回归问题)或投票(分类问题)来确定。

Bagging算法的主要步骤如下:

  1. 从原始数据集中有放回地随机抽样,生成多个子数据集。
  2. 在每个子数据集上训练一个基模型(如决策树)。
  3. 对新数据进行预测时,将所有基模型的预测结果进行平均或投票,得到最终的预测结果。

Bagging算法的优点包括:

  • 降低模型的方差,减少过拟合。
  • 提高模型的稳定性和泛化能力。

下面是一个使用Bagging算法进行分类的示例代码:

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
import pandas as pd# 加载数据集
data = pd.read_csv('../data/第4章数据/cpus.csv', index_col=0)
Y = data['perf']
Xnames = data.columns
X = data[Xnames[0:6]]# 确保X和Y的样本数量相同
if X.shape[0] != Y.shape[0]:raise ValueError("X和Y的样本数量不同")# 划分数据集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, random_state=14)# 初始化Bagging分类器,基模型为决策树
bagging = BaggingClassifier(DecisionTreeClassifier(random_state=14), random_state=14)# 在训练数据上训练模型
bagging.fit(X_train, Y_train)# 在测试数据上进行预测
Y_test_pred_bagging = bagging.predict(X_test)# 计算准确率
accuracy_bagging = accuracy_score(Y_test, Y_test_pred_bagging) * 100
print("测试集准确率为 {:.1f}%".format(accuracy_bagging))

这个示例代码展示了如何使用Bagging算法结合决策树进行分类,并计算测试集的准确率。

#例4.3
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier# Initialize the Bagging Classifier with a Decision Tree
bagging = BaggingClassifier(DecisionTreeClassifier(random_state=14), random_state=14)# Fit the model on the training data
bagging.fit(X_train, Y_train)# Predict on the test data
Y_test_pred_bagging = bagging.predict(X_test)# Calculate the accuracy
accuracy_bagging = np.mean(Y_test_pred_bagging == Y_test) * 100
print("The test accuracy is {:.1f}%".format(accuracy_bagging))
The test accuracy is 92.3%
show_table(Y_test, Y_test_pred_bagging)
pred_0pred_1
True_0458
True_1387

4.3 随机森林算法

随机森林(Random Forest)算法是一种集成学习方法,通过结合多个决策树的预测结果来提高整体模型的性能和稳定性。其基本思想是通过构建多个决策树,并将每棵树的预测结果进行平均(回归问题)或投票(分类问题),从而得到最终的预测结果。

随机森林算法的主要步骤如下:

  1. 数据集随机采样:从原始数据集中有放回地随机抽样,生成多个子数据集。
  2. 决策树训练:在每个子数据集上训练一棵决策树。每棵树在训练时只使用数据集的一个随机子集,并且在每个节点的分裂时只考虑特征的一个随机子集。
  3. 预测结果集成:对新数据进行预测时,将所有决策树的预测结果进行平均(回归问题)或投票(分类问题),得到最终的预测结果。

随机森林算法的优点包括:

  • 降低过拟合:通过集成多个决策树,随机森林可以有效降低模型的方差,减少过拟合。
  • 提高泛化能力:随机森林在处理高维数据和大数据集时表现良好,具有较强的泛化能力。
  • 处理缺失值:随机森林可以处理部分缺失的数据,不需要对缺失值进行特殊处理。
  • 计算特征重要性:随机森林可以计算每个特征的重要性,有助于特征选择和数据理解。

随机森林算法的缺点包括:

  • 计算开销大:由于需要训练大量的决策树,随机森林的训练和预测时间较长,计算开销较大。
  • 模型解释性差:由于集成了多个决策树,随机森林的模型解释性较差,不容易理解每个特征对最终预测结果的影响。

下面是一个使用随机森林算法进行分类的示例代码:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn

相关文章:

决策树——基于乳腺癌数据集与cpu数据集实现

决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …...

探索空间自相关:揭示地理数据中的隐藏模式

目录 一、什么是空间自相关? 类型 二、空间自相关的数学基础 空间加权矩阵 三、度量空间自相关的方法 1. 全局自相关 2. 局部自相关 四、空间自相关的实际应用 五、Python实现空间自相关分析 1. 数据准备 2. 计算莫兰指数 3. 局部自相关(LISA 分析&…...

echarts使用示例

柱状图折线图 折柱混合:https://echarts.apache.org/examples/zh/editor.html?cmix-line-bar option {title:{show: true},tooltip: {trigger: axis,axisPointer: {type: cross,crossStyle: {color: #999}}},toolbox: {feature: {dataView: { show: true, readOnl…...

Flink高可用配置(HA)

从Flink架构中我们可以看到,JobManager这个组件非常重要,是中心协调器,负责任务调度和资源管理。默认情况下,每个Flink集群只有一个JobManager实例。这会产生单点故障(SPOF):如果JobManager崩溃,则无法提交新程序,正在运行的程序也会失败。通过JobManager的高可用性,…...

如何编写出色的技术文档

目录 ​编辑 1. 明确文档目的和受众 目的的重要性 了解受众 2. 收集和组织信息 信息收集的技巧 组织信息 3. 规划文档结构 结构规划的重要性 结构规划的步骤 4. 编写内容 语言和风格 内容的组织 编写技巧 5. 审阅和测试 审阅的重要性 测试的必要性 6. 版本控…...

学习日记_20241126_聚类方法(谱聚类Spectral Clustering)

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…...

图书系统小案例

目前就实现了分页查询,修改,删除功能 这个小案例练习到了很多技能,比如前后端交互、异步请求、三层架构思想、后端连接数据库、配置文件、基础业务crud等等 感兴趣的小伙伴可以去做一个试试 准备工作 1、使用maven构建一个web工程 打开i…...

目标检测之学习路线(本科版)

以下是为一名计算机科学与技术本科大四学生整理的“目标检测”学习路线,结合了从基础到高级的内容,适合初学者逐步深入。每个阶段都有明确的学习要求、学习建议和资源推荐。 阶段一:基础知识学习 学习要求: 掌握编程语言 Pytho…...

C#调用C++ DLL方法之C++/CLI(托管C++)

托管C与C/CLI前世今生 C/CLI (C/Common Language Infrastructure) 是一种用于编写托管代码的语言扩展,它是为了与 .NET Framework 进行互操作而设计的。C/CLI 是 C 的一种方言,它引入了一些新的语法和关键字,以便更好地支持 .NET 类型和垃圾…...

免费搭建一个属于自己的个性化博客(Hexo+Fluid+Github)

文章目录 0.简介1. 下载安装fluid主题2. 创建文章3. 添加分类及标签3.1 创建“分类”选项3.2 创建“标签”选项4. 文章中插入图片5. 添加阅读量统计6. 添加评论功能7. 显示文章更新时间8. 为hexo添加latex支持小结参考文献0.简介 通过HEXO模板和Fluid主题搭建自己的博客,预览…...

vue3 开发利器——unplugin-auto-import

这玩意儿是干啥的? 还记得 Vue 3 的组合式 API 语法吗?如果有印象,那你肯定对以下代码有着刻入 DNA 般的熟悉: 刚开始写觉得没什么,但是后来渐渐发现,这玩意儿几乎每个页面都有啊! 每次都要写…...

开发需求总结19-vue 根据后端返回一年的数据,过滤出符合条件数据

需求描述: 定义时间分界点:每月26号8点,过了26号8点则过滤出data数组中符合条件数据下个月的数据,否则过滤出当月数据 1.假如现在是2024年11月14日,那么过滤出data数组中日期都是2024-11月的数据; 2.假如…...

人工智能如何改变创新和创造力?

王琼工作室 输出的力量 有了GPT这样的人工智能平台,创新和创造力的机会在哪里? 我们是否有信心: 面对效率,超越效率。 把问题拓展为机会? 把机会拓展为价值? 让智能更好地和我们协作,走心、走…...

Github 基本使用学习笔记

1. 基本概念 1.1 一些名词 Repository(仓库) 用来存放代码,每个项目都有一个独立的仓库。 Star(收藏) 收藏你喜欢的项目,方便以后查看。 Fork(克隆复制项目) 复制别人的仓库&…...

群论入门笔记

群的基本定义 群由一组元素 G 和一个运算(常用符号包括 ,x , 或 ∗)组成。 封闭性 对于任意两个元素 x,y∈G,运算 x * y 的结果仍然属于集合 G,即: ∀x,y∈G,x∗y∈G. 结合律 对于任意 a,b,c∈G&…...

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1)google浏览器下载Get cookies.txt LOCALLY插件2)导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1)使用Pycharm(2024.3)进行代码…...

Python + 深度学习从 0 到 1(00 / 99)

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持! ⭐ 什么是深度学习? 人工智能、机器学习与…...

单点登录深入详解之设计方案总结

基于cookie的单点登录解决方案 概述 用户登录之后 , 将认证信息存储至 Cookie ,当再次访问本服务或者访问其他应用服务时,直接从 Cookie 中传递认证信息,进行鉴权处理。 问题 1. 如何保障Cookie内用户认证信息的安全性? 第一, Cookie…...

Loadsh源码分析-forEach,eachRight,map,flatMap,flatMapDeep,flatMapDepth

处理数组array的函数已经学习完,接下来是collection相关的函数, collection指的是一组用于处理集合(如数组或对象)的工具函数。 lodash源码研读之forEach,forEachRight,map,flatMap,flatMapDeep,flatMapDepth 一、源码地址 GitH…...

检测到“runtimelibrary”的不匹配项: 值“mtd_staticdebug”不匹配值“mdd_dynamic”

1. 解释“runtimelibrary”不匹配错误的含义 在Visual Studio中,LNK2038错误表示链接器检测到项目与其依赖的库之间存在“Runtime Library”(运行时库)的不匹配。具体来说,这意味着编译项目时使用的运行时库类型与编译依赖库时使…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

uniapp中使用aixos 报错

问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...