基于Python实现心脏病数据可视化DEA+预测【500010103.1】

news2024/12/22 10:31:14

一、数据说明

该心脏病数据集是通过组合 5 个已经独立可用但以前未合并的流行心脏病数据集来策划的。在这个数据集中,5 个心脏数据集结合了 11 个共同特征,使其成为迄今为止可用于研究目的的最大心脏病数据集。
该数据集由 1190 个实例和 11 个特征组成。这些数据集被收集并组合在一个地方,以帮助推进与CAD相关的机器学习和数据挖掘算法的研究,并希望最终推进临床诊断和早期治疗。

二、导入包

import numpy as np # 线性代数
import pandas as pd # 数据处理, CSV file I/O (e.g. pd.read_csv)

import warnings
warnings.filterwarnings("ignore")

import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier

from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

from IPython.core.display import display, HTML

三、数据集基本信息

1、导入数据

df = pd.read_csv("./data/heart_statlog_cleveland_hungary_final.csv")
df.shape

image.png

2、数据处理

df.head()

image.png

df.describe()

image.png

df.isna().sum()

image.png

四 、类别统计

categoricals = ["sex", "chest pain type", "fasting blood sugar", "resting ecg", "exercise angina", "ST slope", "target"]
fig, axes = plt.subplots(nrows=1, ncols=7, figsize=(12, 5))

Figure_1.png

五、分类参数对心脏病诊断的影响

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(12, 7))
index = 0

Figure_2.png

六、配对图显示诊断标记的患者之间的数值数据分布

sns.pairplot(df, vars=numericals, hue=df.columns[-1])

Figure_3.png

七、显示心脏病患者和非心脏病患者数值均值的条形图

fig, axes = plt.subplots(nrows=1, ncols=5, figsize=(10, 7))
for i, j in enumerate(numericals):
    plots(df, df.columns[-1], j, axes[i])

Figure_4.png

八、显示心脏病患者和非心脏病患者的数值分布和异常值的箱线图

fig, axes = plt.subplots(nrows=1, ncols=5, figsize=(10, 7))
for i, j in enumerate(numericals):

Figure_5.png

九、Kdeplots、条形图、箱线图显示无心脏病患者的数值分布

for i in df[df.columns[-1]].unique():
    if i == 0:
        display(HTML(
            "<h1>柱状图,条形图,箱形图显示了无心脏病患者的数值分布</h1>"))
    else:
        display(HTML(
            "<h1>柱状图,柱状图,箱形图显示了心脏病患者的数值分布</h1>"))
    temp_df = df[df[df.columns[-1]] == i]

1、Kdeplot显示性别、胸痛类型、空腹血糖、静息心电图、运动性心绞痛、峰值运动ST段的斜率组患者的数值密度

Figure_6.png
Figure_7.pngFigure_8.pngFigure_9.pngFigure_10.pngFigure_11.png

2、显示性别、胸痛类型、空腹血糖、静息心电图、运动性心绞痛、峰值运动ST段的斜率群体患者的数值平均值的条形图

Figure_12.pngFigure_13.pngFigure_14.pngFigure_15.pngFigure_16.pngFigure_17.png

3、箱形图显示了数值异常值和性别、胸痛类型、空腹血糖、静息心电图、运动性心绞痛、峰值运动ST段的斜率的患者之间的数据分布

Figure_18.pngFigure_19.pngFigure_20.pngFigure_21.pngFigure_22.pngFigure_23.png

4、kdeploy显示了性别、胸痛类型、空腹血糖、静息心电图、运动性心绞痛、峰值运动ST段的斜率的群体患者的数字密度

Figure_24.pngFigure_25.pngFigure_26.pngFigure_27.pngFigure_28.pngFigure_29.png

5、显示性别、胸痛类型、空腹血糖、静息心电图、运动性心绞痛、峰值运动ST段的斜率的群体患者的数值平均值的条形图

Figure_30.pngFigure_31.pngFigure_32.pngFigure_33.pngFigure_34.pngFigure_35.png

6、箱形图显示了数值异常值和不同性别、胸痛类型、空腹血糖、静息心电图、运动性心绞痛、峰值运动ST段的斜率的患者之间的数据分布

Figure_36.pngFigure_37.pngFigure_38.pngFigure_39.pngFigure_40.pngFigure_41.png

十、缩放值并拆分为训练和测试批次

x = df.iloc[:, :-1].values
y = df.iloc[:, -1].values

scaler = MinMaxScaler()
x = scaler.fit_transform(x)

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=42, test_size=0.2)

十一、模型

rfc = RandomForestClassifier()
gbc = GradientBoostingClassifier()
etc = ExtraTreesClassifier()
abc = AdaBoostClassifier()
lgr = LogisticRegression()
svc = SVC()
xgb = XGBClassifier()
lgb = LGBMClassifier()

十二、培训和评估

scores, reports, matrices = [], dict(), dict()

for i, j in zip(models, names):
    score, report, matrix = training(i, j)
    scores += [score]
    reports[j] = report
    matrices[j] = matrix


image.png

dt = pd.DataFrame({"score": scores}, index=names)
fig, axes = plt.subplots()
dt = dt.sort_values("score", ascending=False)
dt["score"] = round(dt["score"], 2)
sns.barplot(x=dt.index, y=dt.iloc[:, 0], ax=axes)

Figure_42.png

fig, axes = plt.subplots(nrows=2, ncols=4, figsize=(11, 7))
index = 0

for i in range(2):

Figure_43.png

for i in dt.index:
    print("*"*30)
    print(i)
    print(reports[i])
    print("\n\n")

image.png
image.png
image.png
image.pngimage.pngimage.pngimage.pngimage.png

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

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

相关文章

Springboot+Vue项目-基于Java+MySQL的IT技术交流和分享平台系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

【人工智能】AIGC(Artificial Intelligence Generated Content)

随着生成式 AI 应用快速进入市场&#xff0c;以及越来越多大模型的不断面世&#xff0c;2023 年已经成为生成式 AI 的元年&#xff1a;不同区域、各行各业、不同领域的人们开始尝试在工作和生活中使用生成式 AI&#xff0c;以探索各种可能性。于企业而言&#xff0c;生成式 AI …

Matlab图像处理-均值滤波,中值滤波和高斯滤波。

针对添加了零均值高斯噪声的图像&#xff0c;以取得尽可能好的处理效果为目的&#xff0c;采用不少于3种方法进行处理&#xff1b;对处理结果进行定性和定量的比较、并得出相应的结论。 1.算法原理&#xff1a; 采用的图像滤波包括均值滤波&#xff0c;中值滤波和高斯滤波。 …

算法基础:并查集详解

并查集 并查集&#xff0c;在一些有N个元素的集合应用问题中&#xff0c;我们通常是在开始时让每个元素构成一个单元素的集合&#xff0c;然后按一定顺序将属于同一组的元素所在的集合合并&#xff0c;其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学…

【网络编程】网络编程概念 | TCP和UDP的区别 | UDP数据报套接字编程 | Socket

文章目录 网络编程一、什么是网络编程1.TCP和UDP的区别 二、UDP数据报套接字编程DatagramSocketDatagramPacket回显服务器&#xff08;echo server&#xff09; 网络编程 一、什么是网络编程 通过网络&#xff0c;让两个主机之间能够进行通信。基于通信来完成一定的功能。 ​…

Linux网络-DNS域名解析服务

目录 一.DNS相关介绍 1.DNS是什么 2.DNS系统的分布式数据结构 根域 顶级域 二级域 子域 主机 3.服务器类型 主域名服务器 从域名服务器 缓存域名服务器 转发域名服务器 二.DNS域名解析 1.DNS域名解析方式及功能 2.DNS域名解析查询方式 2.1.递归查询&#xff0…

Verilog基础语法——parameter、localparam与`define

Verilog基础语法——parameter、localparam与define 写在前面一、localparam二、parameter三、define写在最后 写在前面 在使用Verilog编写RTL代码时&#xff0c;如果需要定义一个常量&#xff0c;可以使用define、parameter和localparam三种进行定义与赋值。 一、localparam …

施耐德EOCR-2CT-300/5电流互感器 50HZ 5VA

EOCR主要产品有电子式电动机保护继电器&#xff0c;电子式过电流继电器&#xff0c;电子式欠电流继电器&#xff0c;电子式欠电压继电器&#xff0c;其它保护和监视装置&#xff0c;电流互感器。 施耐德EOCR-2CT-300/5电流互感器 EOCR-2CT系列型号&#xff1a; EOCR 2CT 100…

操作系统安全:Linux安全审计,Linux日志详解

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

18.Nacos配置管理-微服务读取Nacos中的配置

需要解决的问题 1.实现配置更改热更新&#xff0c;而不是改动了配置文件还要去重启服务才能生效。 2.对多个微服务的配置文件统一集中管理。而不是需要对每个微服务逐一去修改配置文件&#xff0c;特别是公共通用的配置。 配置管理服务中的配置发生改变后&#xff0c;回去立…

leetcode-二叉树的镜像-91

题目要求 思路1 1.遍历一遍二叉树&#xff0c;将左边的结点对应创建一个右边的结点 2.用此方法空间复杂度O(n)&#xff0c;并不是最优 思路2 1.将一个结点的左右子树进行交换&#xff0c;如果左子树还有左右结点&#xff0c;就再交换左子树的左右结点&#xff0c;以此递归下去…

vscode 创建代码模版

在vscode中快捷创建代码模版 1.在VSCode中&#xff0c;按下Ctrl Shift P&#xff08;Windows/Linux&#xff09;或Cmd Shift P&#xff08;Mac&#xff09;打开命令面板。 2.然后输入"Preferences: Configure User Snippets"并选择该选项。打开一个json文件用户…

Python函数小知识

目录 一、函数的定义和调用 二、函数参数 三、函数作用域 四、递归函数和匿名函数 一、函数的定义和调用 def 函数名(参数): 自定义函数可以分为有参函数和无参函数 。 函数的作用&#xff1a; 在Python中定义函数可以提高代码的复用率&#xff0c;避免重复的代码&#xff0c;…

matlab保存示波器数据

再重新运行一下示波器 然后就可以在工作区看见&#xff08;这里没有运行所以没有&#xff09; 将保存到文件夹中方便后续绘图

服务于金融新核心系统 星辰天合与中电金信完成产品兼容认证

近日&#xff0c;北京星辰天合科技股份有限公司&#xff08;简称&#xff1a;XSKY星辰天合&#xff09;与中电金信软件有限公司&#xff08;简称&#xff1a;中电金信&#xff09;完成产品兼容性认证&#xff0c;星辰天合的企业级分布式统一数据平台 XEDP 符合金融级数字底座&q…

“一个有趣的C语言代码”分析

“一个有趣的C语言代码” 一个有趣的C语言代码-流浪的海豚-ChinaUnix博客 #include <stdio.h> int print() {printf("hello world!\n");return 0; } int main(void) {long base[0];long* result base3;*(result1) *result;*result (long)print;return 0; …

Qt : 在QTreeWidget中添加自定义右键菜单

一、引言 如图&#xff0c;我们需要在一个QTreeWidget 控件中添加了自定义右键菜单。 二、思路 如何做到的呢&#xff0c;很简单。浅浅记录和分享一下。 继承QTreeWidget&#xff0c;定义一个子类CustomTreeWidget &#xff0c;在重写contextMenuEvent 事件即可。 三、代…

数据结构初阶——树和二叉树

数据结构初阶——树和二叉树 1. 树的概念和结构1.1 树的概念1.2 树的表示 2. 二叉树2.1 二叉树的概念和结构2.2 二叉树的存储结构2.2.1 顺序存储2.2.2 链式存储 3. 二叉树的顺序结构及实现——堆3.1 堆的概念和结构3.2 堆的实现3.2.1 堆的定义3.2.2 堆的向上调整3.2.3 堆的向下…

Pycharm/Dataspell中使用jupyter导入ros humble包

配置ros humble对应python包路径文件 首先在~/.local/lib/python3.10/site-packages目录下新建一个.pth文件&#xff0c;如下图所示。 将对应的ros humble的python包的路径配置在上述文件中&#xff0c;一行放置一个路径&#xff0c;对应的路径如下图所示。 完成上述操作后…

ESP32 IDF环境 连接WIFI

新建wifi.h #ifndef __WIFI_H_ #define __WIFI_H_#include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" #include "esp_system.h" #include "esp_wifi.h&…