AI应用实战课学习总结(4)医疗数据可视化
大家好,我是Edison。
最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。
今天是我们的第4站,通过一个经典的医疗数据集来进行数据可视化的实战。
数据集介绍
这是一个从UCI网站(https//archive.ics.uci.edu/ml/index.php)获取的美国威斯康辛州的乳腺癌数据集,它包括了一些对乳腺细胞测量之后的特征数据(如厚度、大小等)和标签数据(诊断结果:良性or恶性),现经常被拿来做机器学习分类算法的入门教学。
下面就是该数据集所有的数据字段的介绍:

该数据集大约有569个样本,它的良性(健康)数据样本 和 恶性(确诊)数据样本相对来说是比较平均的(良性357个,恶性212个)。
针对该数据集,我们可以使用Matplotlib和Seaborn等可视化库快速做一些数据可视化的操作,帮助我们进行数据分析。
例如,我们可以对诊断结果做标签数据分布的柱状图,就可以快速知道良性和恶性的人数都有多少。

接下来,我们就来基于Python+可视化库来实现一下。
数据可视化实战
Step1 读取数据,设置特征 和 标签
import pandas as pd # 导入Pandas数据处理工具
# 读取数据
data = pd.read_csv('medical-data-demo.csv')
data.head() # head方法显示前5行数

# 设置X(特征)和y(标签)
y = data["诊断结果"]
X = data.drop(["诊断结果", "ID"], axis=1)
X

Step2 诊断结果分布柱状图(基于matplotlib)
import matplotlib.pyplot as plt
# 设置字体为SimHei,以正常显示中文标签
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['font.sans-serif']=['SimHei']
# 设置正常显示负号
plt.rcParams['axes.unicode_minus']=False
# 通过柱状图显示y(诊断结果)的分布
y.value_counts().plot(kind='bar', color='skyblue', edgecolor='black')
plt.title('诊断结果分布')
plt.xlabel('诊断结果')
plt.ylabel('数量')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
效果如下图:

Step3 某些特征的直方图
# 显示特征数据集的统计信息
X.describe()
即可得到每个特征的最大、最小值、平均值、四分位、中位数等统计信息:

# 查看X的特征名称
features = X.columns
# 绘制前三个特征的直方图
first_three_features = features[:3]
# 设置画布和子图,这里是三个子图
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(8, 10))
# 依次设置三个子图的属性
for i, feature in enumerate(first_three_features):
axes[i].hist(X[feature], bins=30, color='skyblue', edgecolor='black')
axes[i].set_title(f"{feature} - 直方图")
axes[i].set_xlabel('值')
axes[i].set_ylabel('频数')
axes[i].grid(True, axis='y', linestyle='--', linewidth=0.7, alpha=0.6) plt.tight_layout()
plt.show()
前三个特征(平均半径、平均纹理和平均周长)的直方图效果如下:

Step4 部分特征的箱线图
箱线图是一种非常有用的统计工具,主要用于展示一组数据的分布情况。它不仅能反映数据的集中程度,还能展示数据的离散程度。简单来说,箱线图就是用来告诉你:你的数据分布是什么样的,以及它们是如何变化的。

首先,先做一下数据的标准化:
from sklearn.preprocessing import StandardScaler # Setting X and y
y = data["诊断结果"]
X = data.drop(["诊断结果", "ID"], axis=1) # Selecting the first 10 features
selected_features = X.columns[:10] # Standardizing X
scaler = StandardScaler()
X_standardized = scaler.fit_transform(X) # Extracting the standardized values of the selected features
X_selected_standardized = X_standardized[:, :10]
然后,绘制箱线图:
# Plotting the boxplot for the standardized values of the selected features
import matplotlib.pyplot as plt # Setting the font for displaying Chinese characters in the plot
plt.rcParams["font.family"]=['SimHei']
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False plt.figure(figsize=(12, 8))
plt.boxplot(X_selected_standardized, vert=True)
plt.xticks(range(1, len(selected_features) + 1), selected_features, rotation=45)
plt.title('箱线图 - 标准化后的前10个特征')
plt.ylabel('标准化值')
plt.grid(True, axis='y', linestyle='--', linewidth=0.7, alpha=0.6)
plt.tight_layout() plt.show()
得到的标准化后的前10个特征的箱线图如下:

Step5 部分特征的小提琴图
小提琴图和箱线图类似,用来显示数据分布和概率密度。结合了箱线图和密度图的特征,用来显示数据的分布形状。

要绘制小提琴图,就需要使用Seaborn了,Matplotlib就没法支持了。同样,需要先做数据的标准化之后,再来绘制。
import seaborn as sns # 导入Seaborn
# 绘制小提琴图
plt.figure(figsize=(12, 8))
sns.violinplot(data=pd.DataFrame(X_selected_standardized, columns=selected_features), palette="Set3")
plt.title('小提琴图 - 标准化后的前10个特征')
plt.ylabel('标准化值')
plt.xticks(rotation=45)
plt.tight_layout() plt.show()
得到的标准化后的前10个特征的小提琴图如下:

箱线图和小提琴图的差异:小提琴图可以看出数据分布密度,箱线图看不出来。
Step6 部分特征的相关性热图
相关性热图作为一种可视化工具,可直观地展现两个或多个变量之间的相关性强度。在热图的呈现中,通过矩阵的形式展示数据集中各变量之间的相关性,其中每个单元格代表两个变量之间的相关性系数,并以颜色深浅来直观表示相关性的强弱。常用皮尔逊相关系数来衡量,该系数的取值范围在-1到1之间,其中-1表示完全负相关,1表示完全正相关,0表示无线性相关。
这种可视化方式不仅有助于我们迅速捕捉数据集中的潜在关联规律,还能为后续的数据分析和建模工作提供有力的指导。
绘制相关性热图,仍然使用Seaborn来绘制:
# 绘制相关性热图
correlation_matrix = pd.DataFrame(X_selected_standardized, columns=selected_features).corr() # 得到相关性矩阵
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title('前10个特征的相关性热图')
plt.tight_layout() plt.show()
得到的标准化后的前10个特征的相关性热图如下:

小结
本文介绍了经典的乳腺癌医疗数据集,并基于该数据集使用Matplotlib和Seaborn做了一些常见的数据可视化图的绘制,有了这些图可以帮助我们做数据分析。
推荐学习
黄佳,《AI应用实战课》(课程)

黄佳,《图解GPT:大模型是如何构建的》(图书)
黄佳,《动手做AI Agent》(图书)

AI应用实战课学习总结(4)医疗数据可视化的更多相关文章
- Caffe学习系列(13):数据可视化环境(python接口)配置
caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...
- DDD实战课--学习笔记
目录 学好了DDD,你能做什么? 领域驱动设计:微服务设计为什么要选择DDD? 领域.子域.核心域.通用域和支撑域:傻傻分不清? 限界上下文:定义领域边界的利器 实体和值对象:从领域模型的基础单元看系 ...
- 【python数据分析实战】电影票房数据分析(二)数据可视化
目录 图1 每年的月票房走势图 图2 年票房总值.上映影片总数及观影人次 图3 单片总票房及日均票房 图4 单片票房及上映月份关系图 在上一部分<[python数据分析实战]电影票房数据分析(一 ...
- Caffe学习系列(11):数据可视化环境(python接口)配置
参考:http://www.cnblogs.com/denny402/p/5088399.html 这节配置python接口遇到了不少坑. 1.我是利用anaconda来配置python环境,在将ca ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- JavaEE精英进阶课学习笔记《博学谷》
JavaEE精英进阶课学习笔记<博学谷> 第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准 ...
- [AI开发]将深度学习技术应用到实际项目
本文介绍如何将基于深度学习的目标检测算法应用到具体的项目开发中,体现深度学习技术在实际生产中的价值,算是AI算法的一个落地实现.本文算法部分可以参见前面几篇博客: [AI开发]Python+Tenso ...
- Python第十课学习
Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...
- Python第九课学习
Python第九课学习 数据结构: 深浅拷贝 集合set 函数: 概念 创建 参数 return 定义域 www.cnblogs.com/yuanchenqi/articles/5782764.htm ...
- Python第八课学习
Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...
随机推荐
- 学习Kotlin语法(四)
简介 在上一节,我们对Kotlin中函数的相关知识有了大致的了解,本章节我们将去了解一些Kotlin中的作用域函数. 目录 let:处理可空对象,链式操作 run:对象配置 + 计算返回值 with: ...
- 使用Nginx反向代理本地服务(无固定公网IP通过端口映射公开的服务)的坑
使用Nginx反向代理本地服务(无固定公网IP通过端口映射公开的服务)的坑 前言:之前公司的服务器都是云服务器,性能比较差,而我们有一些内部使用的系统和极少数外部用户使用的系统,对资源有一定的要求,也 ...
- 【AI工具实战】一招解决英文视频困境,四步用AI搞定全中文字幕,你也可以!(文末附工具下载)
"AI时代最大的红利,是让每个人都有机会成为那个"想到就能做到"的创造者." AI粉嫩特攻队,2025年4月5日. 故事源于一个我想看的国外视频.本想点开视频准 ...
- .net WorkFlow 流程介绍
WikeFlow官网:www.wikesoft.com WikeFlow学习版演示地址:workflow.wikesoft.com WikeFlow学习版源代码下载:https://gitee.com ...
- AbstractAutoProxyCreator#postProcessBeforeInstantiation
一.定义 postProcessBeforeInstantiation 是 Spring AOP 动态代理的核心扩展点,通过提前创建代理对象优化性能,并支持丰富的自定义逻辑(如事务.安全) 二.代码分 ...
- Asp.net mvc基础(九)使用DropDownList下拉列表
第一种下拉列表写法: 后端 前端 第二种下拉列表写法: 使用Html辅助方法@Html.DropDownList("名称","List<SelectListItem ...
- Cursor入门教程-JetBrains过度向
Cursor使用笔记 前置:之前博主使用的是JetBrains的IDE,VSCode使用比较少,所以会尽量朝着JetBrains的使用习惯及样式去调整. 一.设置语言为中文 如果刚上手Cursor,那 ...
- ESP32S3播放音频文件
ESP32S3播放音频文件 硬件基于立创实战派esp32s3 软件代码基于立创实战派教程修改,分析 播放PCM格式音频 原理图分析 音频芯片ES8311 ES8311_I2C_ADD:0x18 音频功 ...
- 用DevEco Studio增量补丁修复功能,让鸿蒙应用的调试效率大增
在鸿蒙应用开发的快节奏赛道上,每一秒的开发效率提升都至关重要.如何更快地看到代码更改后的效果?如何尽可能缩短开发.调试和验证的周期?如何做到在某大厂180万行+项目中将代码修改即时生效?这些问题在De ...
- nacos安装
linux-docker 下载nacos docker pull nacos/nacos-server:v2.2.3 `` ## 下载git脚本 ```shell cd /prod mkdir nac ...