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

【毕业设计】 心血管疾病分析系统(医学大数据分析)

文章目录

  • 1 前言
  • 1 课题背景
  • 2 数据处理
  • 3 数据可视化

1 前言

🔥 Hi,大家好,这里是丹成学长的毕设系列文章!

🔥 对毕设有任何疑问都可以问学长哦!

这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是

🚩 基于大数据的心血管疾病分析

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:4分
  • 工作量:4分
  • 创新点:3分

🧿 选题指导, 项目分享:

https://blog.csdn.net/Mr_DC_IT/article/details/126460477

1 课题背景

本项目的任务是利用患者的检查结果预测心血管疾病(CVD)的存在与否。

2 数据处理

数据集包括年龄、性别、收缩压、舒张压等12个特征的患者数据记录7万份。

当患者有心血管疾病时,目标类“cardio”等于1,如果患者健康,则为0。

数据描述

有三种类型的输入特征:

  • Objective: 客观事实;
  • Examination: 体检检查结果;
  • Subjective: 病人提供的信息

在这里插入图片描述
数据信息概览

import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
import os


df.head()

在这里插入图片描述
变量分析

df.info()

在这里插入图片描述
所有特征都是数字,12个整数和1个小数(权值)。第二列告诉我们数据集有多大,每个字段有多少非空值。
我们可以使用’ describe() ‘来显示每个属性的样本统计信息,比如’ min ‘、’ max ‘、’ mean ‘、’ std ':

评论

df.describe()

在这里插入图片描述
年龄以天为单位,身高以厘米为单位。
让我们看看数值变量以及它们是如何在目标类中分布的。
例如,什么年龄患有心血管疾病的人数超过没有心血管疾病的人数?

3 数据可视化

from matplotlib import rcParams
rcParams['figure.figsize'] = 11, 8
df['years'] = (df['age'] / 365).round().astype('int')
sns.countplot(x='years', hue='cardio', data = df, palette="Set2");

在这里插入图片描述
可以观察到55岁以上的人更容易得心血管疾病的。
从上面的表格中,我们可以看到ap_hi, ap_lo, weight 和height中有异常值。我们以后再处理。

让我们看看数据集中的分类变量及其分布:

df_categorical = df.loc[:,['cholesterol','gluc', 'smoke', 'alco', 'active']]
sns.countplot(x="variable", hue="value",data= pd.melt(df_categorical));

在这里插入图片描述

df_long = pd.melt(df, id_vars=['cardio'], value_vars=['cholesterol','gluc', 'smoke', 'alco', 'active'])
sns.catplot(x="variable", hue="value", col="cardio",
                data=df_long, kind="count");

在这里插入图片描述
可以清楚地看到,CVD患者的胆固醇和血糖水平较高。而且一般来说不太活跃,运动少。

为了计算“1”在性别栏中代表女性还是男性,让我们计算每个性别的身高平均值。我们假设男人平均比女人高。

corr = df.corr()
cmap = sns.diverging_palette(220, 10, as_cmap=True)
mask = np.zeros_like(corr, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True

# 设置matplotlib图
f, ax = plt.subplots(figsize=(11, 9))
# 画出热图,并校正长宽比
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,annot = True,
            square=True, linewidths=.5, cbar_kws={"shrink": .5});

在这里插入图片描述
我们可以看到年龄和胆固醇有显著的影响,但与目标阶层的相关性不是很高。

.
让我们创建violinplot来显示不同性别的身高分布。

查看每个性别特征值的身高和体重的平均值可能不足以决定1是男性还是女性。

import warnings
warnings.filterwarnings("ignore")
df_melt = pd.melt(frame=df, value_vars=['height'], id_vars=['gender'])
plt.figure(figsize=(12, 10))
ax = sns.violinplot(
    x='variable', 
    y='value', 
    hue='gender', 
    split=True, 
    data=df_melt, 
    scale='count',
    scale_hue=False,
    palette="Set2");

在这里插入图片描述
让我们创造一个新的特征-身体质量指数(BMI):

在这里插入图片描述
比较健康人的平均BMI和病人的平均BMI。正常的BMI值在18.5到25之间。

df['BMI'] = df['weight']/((df['height']/100)**2)
sns.catplot(x="gender", y="BMI", hue="alco", col="cardio", data=df, color = "yellow",kind="box", height=10, aspect=.7);

在这里插入图片描述
根据女性的BMI,喝酒的女性比喝酒的男性有更高的心血管疾病风险。

🧿 选题指导, 项目分享:

https://blog.csdn.net/Mr_DC_IT/article/details/126460477

相关文章:

  • MyBatis学习(三)
  • 【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
  • 基于Python的视频中的人脸识别系统设计与实现
  • MySQL主从复制详解
  • 【深度学习入门】- 用电路思想解释感知机
  • 文字生成图片
  • HTTPS的原理浅析与本地开发实践(下)
  • java-多态
  • 一、CSS文本样式[文本基础、文本样式、段落控制]
  • Nginx网络服务的配置
  • m基于随机接入代价的异构网络速率分配算法matlab仿真(包括matlab仿真录像)
  • 【VUE的Form表单】使用v-if切换控件时,表单校验不生效
  • EnumWindowsProc
  • SSL安全证书:免费的SSL证书申请渠道有哪些?
  • SQL语言---数据的查询
  • 分享一款快速APP功能测试工具
  • ComponentOne 2017 V2版本正式发布
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Linux Process Manage
  • mysql常用命令汇总
  • Python socket服务器端、客户端传送信息
  • Python语法速览与机器学习开发环境搭建
  • quasar-framework cnodejs社区
  • Shadow DOM 内部构造及如何构建独立组件
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 类orAPI - 收藏集 - 掘金
  • 理解在java “”i=i++;”所发生的事情
  • 你不可错过的前端面试题(一)
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 设计模式 开闭原则
  • 微服务入门【系列视频课程】
  • 延迟脚本的方式
  • 优化 Vue 项目编译文件大小
  • Spring Batch JSON 支持
  • 通过调用文摘列表API获取文摘
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (BFS)hdoj2377-Bus Pass
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • .htaccess 强制https 单独排除某个目录
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /bin/bash^M: bad interpreter: No such file or directory
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [LeetCode] 148. Sort List 链表排序