深度学习实战1--决策树与随机森林(最新版本不报错)

news2024/9/23 5:16:53
1.乳腺癌数据集简介

        乳腺癌数据集包含了美国威斯康星州记录的569个病人的乳腺癌的病情,包含30个维度的生理指标数据(特征),以及乳腺癌是恶性还是良性的标签。因为这是一个二分类问题, 也叫二类判别数据集。

2.实战任务

        这数据主要包含569个样本。每个样本有30个特征(30个生理指标数据)和1个标签 (良性还是恶性)。对于本次任务,并不需要了解30个生理指标的含义。只要知道,这30个指标和恶性、良性之间存在某种关联。

3.思路

解决思路非常简单,对于这种大数据问题(对于几百万的数据来说流程类似),主要有5个步骤:

(1)了解数据集,探索数据;

(2)特征工程;

(3)构建模型;

(4)训练模型;

(5)用测试集来评估模型。

注意这个流程是主要的流程步骤,但不是绝对的。在下一个实战中,会讲解如何使 用模型融合,来增强整体模型的泛化能力。

泛化能力泛化能力是机器学习中一个非常重要的概念,它指的是模型对于在训练过程中未曾见过的数据的表现能力。

4.废话不多说直接上代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import pyplot
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.preprocessing import LabelEncoder

# 读取数据
breast_cancer_data = pd.read_csv(
    "D:\\breast_data.csv",
    header=None,
    names=['C_D', 'C_T', 'U_C_Si', 'U_C_Sh', 'M_A', 'S_E_C_S', 'B_N', 'B_C', 'N_N', 'M', 'Class']
)

# 查看维度
print('查看维度:')
print(breast_cancer_data.shape)

# 查看数据
print('查看数据')
print(breast_cancer_data.head(25))

# 数据统计描述
print('数据统计描述')
print(breast_cancer_data.describe())

# 数据分布情况
print("数据分布情况")
print(breast_cancer_data.groupby('Class').size())#按照'class'列的值进行分组,并计算每个组的元素数量
#缺失数据处理
#计算B_N列的平均值,忽略问号
mean_value=breast_cancer_data[breast_cancer_data["B_N"]!="?"].astype(int)["B_N"].mean()
#astype更改类型
#用计算出的平均值替换问号。并转换为整数类型
breast_cancer_data['B_N']=breast_cancer_data["B_N"].replace("?",mean_value).astype(int)
#评估算法
X=breast_cancer_data.iloc[:,1:9]#iloc特征列选取
Y=breast_cancer_data['Class']#目标列
X_train,X_validation,y_train,y_validation=train_test_split(X,Y,test_size=0.2,random_state=7)
'''test_size=0.2: 指定测试集占总数据集的比例为20%。这意味着剩余的80%将被用作训练集
random_state=7: 随机数生成器的种子。设置这个参数可以确保每次分割数据集时都能得到相同的结果,这对于实验的可重复性很重要
随机数种子可以是任何整数值,但通常选择一个固定的数字,如0、7、42等,这些数字在编程社区中被广泛接受作为默认值选择哪个数字
 作为种子并没有严格的规则,重要的是保持一致性,以便在需要时能够复现结果'''
#使用knn算法
knn=KNeighborsClassifier()
knn.fit(X_train,y_train)
predictions=knn.predict(X_validation)#X_validation: 这是验证集的特征数据,模型将使用这些数据来生成预测结果
print('使用knn算法的精确度:',accuracy_score(y_validation,predictions))#y_validation: 这是验证集的真实标签,即模型预测之前已知的正确答案
print('混淆矩阵:\n',confusion_matrix(y_validation,predictions))#这是模型对验证集X_validation的预测结果
print('分类报告:\n',classification_report(y_validation,predictions))

运行结果

  • 精确度(Precision):对于每个类别,表示为正类别的预测中,有多少是正确的
  • 召回率(Recall):也称为真正率或灵敏度,表示为每个类别,实际为正类别的样本中,有多少被正确预测。
  • F1 分数(F1 Score):精确度和召回率的调和平均值,是一个综合考虑精确度和召回率的性能指标。
  • 支持度(Support):每个类别的实际出现次数

 

Sklearn   库的全称是 Scikit-learn,  是一种机器学习的工具。可以简单高效地进行数据 挖掘,快速地调用常见的数据分析工具。 pandas和numpy一般同时使用,不单独使用。

5.优化:#一个关于警告的库

import warnings

井让本代码不再弹出任何警告

warnings.filterwarnings("igmore")

warning 不影响程序运行,但是总是弹出来也使人心神不宁。这个语句可以忽视所有的 warning,这样就不会在代码中看到任何的warning了,这是一个小技巧。但是建议大家在有时间且有能力的情况下,看一下warning 打印出的信息。信息一般是,例如某个语法将会在未来某个版本中作废,请使用某语句来代替等。

接下来是分步骤讲解,光想要代码的小伙伴可以忽略不看了,想了解更多的小伙伴可以看一下。

优化:用剪枝增强决策树的繁华能力,修改决策树。加大最大深度的设置

过拟合:指的是模型在训练数据上表现得非常好,但是对于未见过的新数据,其预测能力却很差

决策树剪枝:决策树剪枝是防止决策树过拟合的一种技术。在决策树的构建过程中,剪枝有助于减少树的复杂度,提高模型的泛化能力。

探索数据

        探索数据就是查看数据的大小、维度等特征。为了将数据整合整理,建议将数据都用 Pandas 的 dataframe格式存储起来,这样操作快速,可视化方便。

决策树模型

        在训练之前,需要划分数据集和测试集。把数据集中的30%作为测试集来验证模型的效果。

df_train   是要被划分的特征;df_target  是对应特征的标签,也就是label。test_size是数据集中,把多少划分成test,多少划分成train。random_state是设定随机种子,因为这个划分是随机在数据集中选取30%的数据作为test(不是前30%也不是后30%而是随机选取),因此每一次运行代码可能得到的测试集不  样,这样就难以重复运行同样的代码来改进模型。因此通过设定 random_state,       让每一次的随机都是相同的随机。这个划分不仅仅可以用于划分测试集和训练集,还可以用来分割训练集来实现 多模型,增强泛化能力。

        例如,假设现在已经有的训练集和测试集。可以再把训练集对半分成训练集1和训练集2。在训练模型的时候,可以一个用训练集1进行训练, 一个用训练集2进行训练,在验证模型的时候分别把测试机输入两个模型,然后将结果取平均值。这样泛化能力会增强。

 

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

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

相关文章

Vue3、Vite、Pinia基础学习

Vue3 1、创建一个Vue3应用 <script src"vue.global.js"></script> <body><div id"app">{{msg}}<h2>{{person.title}}</h2><h2>{{person.name}}</h2></div><script>// 采用解构的方式可以省…

【使用 Python 进行图像裁剪的多种方法】

以下为您介绍使用 Python 进行图像裁剪的多种方法及代码示例&#xff1a; 使用 PIL 库&#xff08;Pillow&#xff09;&#xff1a; Pillow 是 Python 中一个强大的图像处理库&#xff0c;其截图功能不仅可以获取屏幕截图&#xff0c;还能对截图进行丰富的图像处理操作。例如&…

PD取电协议芯片 XSP08Q集成全协议芯片

1&#xff1a;Type-C接口应用很广泛&#xff0c;几乎可以覆盖各行各业&#xff0c;例如快充领域&#xff0c;多种快充协议都可以在Type-C接口上实现&#xff0c;在用电端&#xff0c;只需要使用XSP08取电协议控制芯片&#xff0c;即可获取各种快充电压&#xff0c;例如&#xf…

以某团为案例,30分钟讲清商业模式画布该如何做!

在进行商业模式分析时&#xff0c;即时白板内置的商业模式画布模板显然是一种极其有效的工具。该模板将复杂的商业逻辑分解为明确的要素&#xff0c;使得分析过程更具条理性和方向性&#xff0c;便于深刻理解和呈现商业模式。 以下以某团为例&#xff0c;详细解析其商业逻辑&a…

Django REST Framework(十九)权限

Django REST framework (DRF) 的权限认证涉及以下几个方面&#xff1a;全局权限配置、局部权限配置、自定义权限类、以及自定义认证类。以下是关于这些方面的详细说明&#xff1a; 1. 全局权限配置 在 Django 项目的配置文件 settings.py 中&#xff0c;可以全局配置 DRF 的权…

警惕!血脂偏高,这些身体信号你不可不知!

在快节奏的现代生活中&#xff0c;高血脂&#xff0c;这个看似“沉默的杀手”&#xff0c;正悄然威胁着越来越多人的健康。它不像感冒发烧那样有明显的症状&#xff0c;却能在不知不觉中侵蚀血管&#xff0c;增加心血管疾病的风险。今天&#xff0c;我们就来揭开高血脂的神秘面…

第四届中国RPA+AI开发者大赛火热报名中!

创新未来 第四届中国RPAAI开发者大赛 报名正式启动 数字化转型的加速推进为RPA技术带来了前所未有的发展机遇。AI技术的飞速进步&#xff0c;特别是在机器学习、自然语言处理和计算机视觉等领域的显著进展&#xff0c;已经大幅度扩展了RPA的应用范围。 据IDC研究报告预测&am…

windows共享文件给单个用户方法操作说明

如下图&#xff0c;我们想给学习视频这个文件夹共享出去&#xff0c;但是不想每个用户&#xff08;Everyone&#xff09;都可以访问&#xff0c;只允许本地账户ZZ可以访问&#xff0c;该如何操作呢&#xff1f;请见下面的内容。 右键这个文件夹&#xff0c;点击属性 点击图下所…

本地运行 AI 有多慢 ? 大模型推理测速 (llama.cpp, Intel GPU A770)

上文说到, 天下苦 N 卡久矣, 直接使用 CPU 推理又太慢. 那么, 在没有 N 卡的情况下, 本地运行 AI (神经网络) 大模型, 能够达到怎样的速度 ? 同志们好, 欢迎来到 胖喵穷人实验室 ! 这里专注于 低成本, 低难度, 低风险 的 “三低” 小实验. 胖喵穷人实验室 (PM-PLab-E)正式名称…

如何在算家云搭建模型Linly-Dubbing(语音识别)

一、模型介绍 Linly-Dubbing 是一个智能视频多语言 AI 配音和翻译工具&#xff0c;它融合了 YouDub-webui 的灵感&#xff0c;并在此基础上进行了拓展和优化。 该模型致力于提供更加多样化和高质量的配音选择&#xff0c;通过集成Linly-Talker的数字人对口型技术&#xff0c;…

零基础入门转录组数据分析——预后模型之多因素cox模型

零基础入门转录组数据分析——预后模型之多因素cox模型 目录 零基础入门转录组数据分析——预后模型之多因素cox模型1. 预后模型和多因素cox模型基础知识2. 多因素cox预后模型&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理2. 2 构建多因素cox模型&#xff08;用输…

有色冶炼行业中的智能电动机保护器

低压电动机作为有色冶炼企业底层大量使用的设备&#xff0c;其异常运行不仅影响冶炼厂的正常生产&#xff0c;还会 威胁到人的生命安全&#xff0c;因此为电动机设置合适而又全面的保护至关重要。智能电动机保护器集保护、 遥测、通信、遥控、显示等功能于一体&#xff0c;是目…

基于大数据的水资源管理与调度优化研究【Web可视化、灰色预测、大屏设计】

需要本项目的私信博主 目录 1 引言 1.1 研究背景 1.2 国内外研究现状 1.3 研究目的 1.4 研究意义 2 关键技术理论介绍 2.1 Python语言 2.2 pandas 2.3 pyecharts 2.4 灰色预测 3 数据来源及处理 3.1 数据来源 3.2 数据处理 4 数据可视化分析及大屏设计 4.1 年度…

Windows下安装Kafka3

参考文章&#xff1a;Windows下安装Kafka3_kafka3 window-CSDN博客 安装配置Kafka 首先在官网 Apache Kafka 下载Kafka二进制压缩包。无论是在CentOS还是在Windows下都是下载该压缩包&#xff0c;里面已经包含了Kafka Linux和windows平台下的可执行文件了。选择目前比较新的3…

解决 JS WebSocket 心跳检测 重连

解决 JS WebSocket 心跳检测 重连 文章目录 解决 JS WebSocket 心跳检测 重连一、WebSocket 心跳检测的作用二、心跳检测的处理方案1. 创建 WebSocket 连接2. 心跳参数设置3. 心跳检测逻辑4. 心跳包响应处理5. 断线重连机制 三、总结 一、WebSocket 心跳检测的作用 WebSocket 是…

计量校准企业的生产制造,具备什么实际的作用?

计量校准行业已经发展了几十年&#xff0c;从建国后成立的计量所&#xff0c;建立了计量规范&#xff0c;到如今百花齐放&#xff0c;各类机构不断涌出&#xff0c;可供企业选择的计量机构可谓是越来越多&#xff0c;那么实际意义上&#xff0c;计量校准企业的生产制造&#xf…

草莓成熟度检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

草莓成熟度检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

【ragflow】安装2:源码安装依赖

中文文档【ragflow】安装1: docker:失败官方说的成功 docker 安装的启动失败 重新来一遍,不会重新拉取: root@k8s-master-pfsrv:/home/zhangbin/perfwork/rag# cd ragflow/ root@k8s-master-pfsrv:/home/

基于数字孪生智慧机场建设方案(53页PPT)

方案介绍&#xff1a; 数字孪生技术是一种通过数字化方式创建物理实体的虚拟模型&#xff0c;并借助历史数据、实时数据以及算法模型&#xff0c;模拟、验证、预测、控制物理实体过程的技术手段。在智慧机场建设中&#xff0c;该技术通过构建机场的虚拟镜像&#xff0c;实现机…

软件设计师全套备考系列文章15 -- 数据库:规范化、控制功能、大数据

软考-- 软件设计师&#xff08;15&#xff09;-- 数据库&#xff1a;规范化、控制功能、大数据 文章目录 软考-- 软件设计师&#xff08;15&#xff09;-- 数据库&#xff1a;规范化、控制功能、大数据前言一、章节考点二、规范化三、数据库的控制功能四、大数据、数据仓库 前言…