dede 添加演示网站,企业网站配色,讯展网站优化推广,图片站手机网站怎么做引言
在医疗数据分析中#xff0c;预测个人的医疗花费是一个重要的课题。这不仅有助于个人健康管理#xff0c;也为医疗资源的合理分配提供了数据支持。本篇博客#xff0c;我们将探讨如何利用协方差矩阵和热力图来分析和预测个人的医疗花费。我们将以DataFountain提供的数…引言
在医疗数据分析中预测个人的医疗花费是一个重要的课题。这不仅有助于个人健康管理也为医疗资源的合理分配提供了数据支持。本篇博客我们将探讨如何利用协方差矩阵和热力图来分析和预测个人的医疗花费。我们将以DataFountain提供的数据为基础结合pandas库中的cov()方法和seaborn库的heatmap()函数来实现这一目标。 一、协方差的定义
在统计学中协方差Covariance是用来衡量两个随机变量之间的变动趋势是否一致的指标。协方差为正表示两个变量正向关系协方差为负表示两个变量反向关系协方差为0表示两个变量没有线性关系。
协方差可以通过以下公式计算 其中和是两个随机变量和是它们的观测值和分别是和的均值是样本数量。 二、协方差矩阵的定义
协方差矩阵是一个的矩阵其中是变量的数量。协方差矩阵的第个元素表示第个变量和第个变量之间的协方差。
假设我们有个一维随机变量。如果我们将它们按列组成一个的矩阵是样本数量则协方差矩阵CC的每个元素可以通过以下公式计算 三、协方差矩阵的计算
协方差矩阵是描述数据集中各特征之间协方差关系的矩阵。在Python中我们可以使用pandas库的cov()方法来计算协方差矩阵。以下是计算协方差矩阵的代码示例
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder# 读取数据
train pd.read_csv(E:/H1/shujvfenxiyukeshihua/资料/第6章 医疗花费预测/train.csv)# 进行编码
encoder OrdinalEncoder(dtypeint)
train[[sex, smoker, region]] encoder.fit_transform(train[[sex, smoker, region]])# 查看协方差矩阵
cov_matrix train.cov()
print(cov_matrix)
协方差矩阵输出如下 从协方差矩阵中我们可以看到不同特征之间的协方差值。例如年龄age与BMIbmi的协方差为10.080775这表明两者之间存在正相关关系。而吸烟者smoker与医疗花费charges的协方差为3773.101975这是一个非常高的值表明吸烟与医疗花费之间有很强的正相关性。 四、热力图
1.热力图的定义
热力图是一种通过颜色来展示数据的二维矩阵可视化方法。它将数据矩阵中的每个元素的值映射到一个颜色尺度上颜色的深浅或色调表示数据值的大小。在协方差矩阵或相关性矩阵的可视化中热力图尤其有用因为它可以帮助我们直观地查看数据集中各个特征之间的关系。
2.热力图的绘制
在Python中我们可以使用Seaborn库来绘制热力图。Seaborn的heatmap函数可以快速生成热力图通过传入数据矩阵和颜色映射参数等我们可以直观地展示协方差矩阵。
示例
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
import numpy as np
import seaborn
train pd.read_csv(D:/大三上/数据分析与可视化/实验文件/第6章 医疗花费预测/train.csv)
encoder OrdinalEncoder(dtypeint)
train[[sex,smoker,region]]\
encoder.fit_transform(train[[sex,smoker,region]])
seaborn.heatmap(train.corr())
代码解释
导入必要的库其中pandas 用于数据处理和分析
OrdinalEncoder 用于将分类变量转换为整数编码
numpy 用于数值计算
seaborn 用于数据可视化。
对分类特征进行编码
train[[sex,smoker,region]] encoder.fit_transform(train[[sex,smoker,region]])
这行代码选择了sex性别、smoker是否吸烟和region地区这三个分类特征使用OrdinalEncoder进行编码并将编码后的结果替换原来的特征值。
seaborn.heatmap(train.corr())
这行代码计算了数据集中所有数值特征之间的相关性矩阵使用seaborn库的heatmap函数绘制热力图。热图中的每个方块代表两个特征之间的相关性颜色越接近1或-1表示两个特征之间的正或负相关性越强。
运行结果如下 相关系数是对协方差的标准化取值范围为 [-1, 1]。 • 1 表示完全正相关-1 表示完全负相关0 表示无线性关系。 • 相关系数的绝对值越接近 1线性关系越强。此处 charges 和 bmi 的相关系数接近 0.3说明有一定的正相关性但不算强。 增强可读性
在热图中可以添加数值显示、调整颜色映射或设置标题等使图表更直观。 annotTrue在每个单元格上显示相关系数的数值。 cmapcoolwarm改变颜色映射更容易区分正负相关。 fmt.2f指定小数点后两位显示。
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
import seaborn as sns
import matplotlib.pyplot as plt# 读取数据
train pd.read_csv(E:/H1/shujvfenxiyukeshihua/资料/第6章 医疗花费预测/train.csv)# 进行编码
encoder OrdinalEncoder(dtypeint)
train[[sex, smoker, region]] encoder.fit_transform(train[[sex, smoker, region]])# 计算相关性矩阵
corr_matrix train.corr()# 使用 seaborn 生成热力图并指定不同的颜色映射
plt.figure(figsize(10, 8)) # 可以调整图的大小cmap viridis # 黄绿色到深紫色sns.heatmap(corr_matrix, cmapcmap, annotTrue, fmt.2f, squareTrue, cbar_kws{shrink: .5})# 显示图形
plt.show()
运行结果 seaborn 提供了多个内置的配色方案cmap常用的包括coolwarm适合表示正负相关蓝色表示负相关黄色表示正相关过渡色为蓝色或绿色。由上图可以得出吸烟与医疗消费的相关性最大。
3.分析 如果两个特征之间的相关系数接近 1 或 -1如相关系数 0.9 或 -0.9这意味着这两个特征之间存在多重共线性。这种情况下模型可能难以确定它们对目标变量的独立影响因为它们包含了相似的信息。解决方法如下去除冗余特征热力图中高相关的特征对可以考虑去除其中一个特征或者用降维技术如PCA来处理。 使用相关性较低的特征我们可以优先选择那些与其他特征相关性较低的特征它们可以提供更多独立的信息避免冗余和多重共线性。例如region 与其他特征的相关系数较低它可能是一个较为独立的特征可以保留。