医疗花费预测——协方差矩阵和热力图
引言
在医疗数据分析中,预测个人的医疗花费是一个重要的课题。这不仅有助于个人健康管理,也为医疗资源的合理分配提供了数据支持。本篇博客,我们将探讨如何利用协方差矩阵和热力图来分析和预测个人的医疗花费。我们将以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(dtype=int)
train[['sex', 'smoker', 'region']] = encoder.fit_transform(train[['sex', 'smoker', 'region']])# 查看协方差矩阵
cov_matrix = train.cov()
print(cov_matrix)
协方差矩阵输出如下:
从协方差矩阵中,我们可以看到不同特征之间的协方差值。例如,年龄(age)与BMI(bmi)的协方差为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(dtype=int)
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,说明有一定的正相关性,但不算强。
增强可读性:
在热图中,可以添加数值显示、调整颜色映射或设置标题等,使图表更直观。 annot=True:在每个单元格上显示相关系数的数值。 cmap='coolwarm':改变颜色映射,更容易区分正负相关。
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(dtype=int)
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, cmap=cmap, annot=True, fmt='.2f', square=True, cbar_kws={"shrink": .5})# 显示图形
plt.show()
运行结果:
seaborn 提供了多个内置的配色方案(cmap),常用的包括:coolwarm:适合表示正负相关,蓝色表示负相关,黄色表示正相关,过渡色为蓝色或绿色。由上图可以得出,吸烟与医疗消费的相关性最大。
3.分析
如果两个特征之间的相关系数接近 1 或 -1(如相关系数 > 0.9 或 < -0.9),这意味着这两个特征之间存在多重共线性。这种情况下,模型可能难以确定它们对目标变量的独立影响,因为它们包含了相似的信息。解决方法如下:去除冗余特征:热力图中高相关的特征对,可以考虑去除其中一个特征,或者用降维技术(如PCA)来处理。
使用相关性较低的特征:我们可以优先选择那些与其他特征相关性较低的特征,它们可以提供更多独立的信息,避免冗余和多重共线性。例如,region 与其他特征的相关系数较低,它可能是一个较为独立的特征,可以保留。
相关文章:
医疗花费预测——协方差矩阵和热力图
引言 在医疗数据分析中,预测个人的医疗花费是一个重要的课题。这不仅有助于个人健康管理,也为医疗资源的合理分配提供了数据支持。本篇博客,我们将探讨如何利用协方差矩阵和热力图来分析和预测个人的医疗花费。我们将以DataFountain提供的数…...
react antd tabs router 基础管理后台模版
在构建 React 后台管理系统时,使用标签页的方式展示路由是一种高效且用户友好的设计模式。这种实现方式通常允许用户在多个页面之间快速切换,并保留页面的状态,类似于浏览器的多标签页功能。 需求分析 1.动态标签页:根据用户的导…...
【数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序实现环形队列的基本运算。 相关知识 为了完成本关任务,你需要掌握: 初始化队列、销毁队列、判断队列是否为空、进队列…...
【数据结构——栈与队列】链栈的基本运算(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序实现链栈的基本运算。 相关知识 为了完成本关任务,你需要掌握: 初始化栈、销毁栈、判断栈是否为空、进栈、出栈、取栈…...
GIT CLONE ERROR: remote: [session-ec426a86] Access denied
报错信息: remote: [session-ec426a86] Access denied 错误原因: 1.更换了不同的GIT仓或者账号 2.之前设置了默认账号密码信息 3. git init 只初始化了GIT项目,并没有清空原有的账号密码配置 处理方法: win11需要到个人文件…...
GitHub 正式收录 MoonBit 作为一门通用编程语言!核心用户突破三万!
MoonBit 编程语言正式被 Github 收录!这对于一个仅有两年发展时间的编程语言来说是一种高度认可,期待未来由 MoonBit 编写的项目数量快速增长,早日成为首个由国人研发迈进 10 万➕ 用户的编程语言。 最近用户数已经接近 3 万(数据…...
PHP中GD库的使用
由于我要用到php的验证码 <?php session_start();// 生成验证码 $random_code substr(md5(uniqid(mt_rand(), true)), 0, 6);// 将验证码保存到 session 中 $_SESSION[captcha] $random_code;// 创建图片 $font 6; $image_width 100; $image_height 40;// 创建图像 $…...
docker安装Elasticsearch和Kibana
上传文件 加载tar包 安装 1.安装elasticsearch 通过下面的Docker命令即可安装单机版本的elasticsearch: docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elastics…...
【Linux】文件管理必备知识和基本指令
【Linux】文件管理必备知识和基本指令 什么是操作系统什么是文件什么是路径01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令(重要):06.rmdir指令 && rm 指令(重要):rmdir指令rm指令 0…...
欢迪迈手机商城设计与实现
文末获取源码和万字论文,制作不易,感谢点赞支持。 题目:欢迪迈手机商城设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管…...
量化交易系统开发-实时行情自动化交易-3.4.2.3.数字货币市场深度数据
19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取市场深…...
有序集合ZSET【Redis对象篇】
🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…...
力扣-图论-9【算法学习day.59】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
如何选择安全、可验证的技术?
澳大利亚信号局的澳大利亚网络安全中心 (ASD 的 ACSC) 发布了一份指导文件,题为《选择安全和可验证的技术》,旨在帮助组织在采购软件(专有或开源)、硬件(例如物联网设备)和云服务(SaaS、MSP 服务…...
Allure在自动化测试中的应用
01 Allure的简介及使用 1、应用场景 自动化的结果一定是通过一个报告来进行体现 Allure 是一个独立的报告插件,生成美观易读的报告,目前支持Python、Java、PHP、C#等语言 为dev/QA 提供详尽的测试报告、测试步骤、日志,也可以为管理层提供统…...
C# 探险之旅:第十一节 - 循环(foreach):一场“遍历”奇幻岛的大冒险!
嘿,勇敢的探险家们!欢迎来到C#奇幻岛的第十一站——“遍历”奇幻岛!今天,我们要乘坐一艘叫做foreach的魔法船,去遍历(也就是一个一个看过来)岛上那些神秘的宝藏箱!准备好了吗&#x…...
Ubuntu24.04配置STMTrack
项目地址:https://github.com/fzh0917/STMTrack 一、安装 CUDA 参考链接: Ubuntu24.04配置DINO-Tracker Ubuntu多CUDA版本安装及切换 由于之前在其他项目中已经安装了 CUDA12.1,这次需要安装另一个版本。 1. 查看安装版本 按照 requireme…...
【Java学习笔记】Map接口和常用方法
一、 Map接口实现类的 特点[很实用] key是自己存的java对象 value是一个固定的 //当有相同的 k ,就等价于替换. 二、 Map常用方法 (根据键–>k) 三、Map接口遍历方法 package com.hspedu.map_; import java.util.*; /** * author 韩顺平 * ver…...
uniapp支持App横竖屏开发总结
一、需求: app要支持重力感应自动切换横竖屏,并切换后样式不能错乱 二、实现 官方文档 官方Git manifest.json文件中 "app-plus" : {"screenOrientation" : ["portrait-primary","portrait-secondary","…...
【工作笔记】Lombok版本变化导致的反序列化异常
Lombok版本变化导致的反序列化异常 背景 因为安全性的考虑,最近在梳理旧系统的系统依赖。改动依赖时候还好,毕竟只是换掉不再合作公司的旧依赖,没敢动别的太多东西。不过没多久,测试团队就找来了… 排查问题之第一次跑偏 旧系…...
多模态大语言模型 MLLM 部署微调实践
1 MLLM 1.1 什么是 MLLM 多模态大语言模型(MultimodalLargeLanguageModel)是指能够处理和融合多种不同类型数据(如文本、图像、音频、视频等)的大型人工智能模型。这些模型通常基于深度学习技术,能够理解和生成多种模…...
LNMP和Discuz论坛
文章目录 LNMP和Discuz论坛1 LNMP搭建1.1 编译安装nginx服务1.1.1 编译安装1.1.2 添加到系统服务 1.2 编译安装MySQL服务1.2.1 准备工作1.2.2 编辑配置文件1.2.3 设置路径环境变量1.2.4 数据库初始化1.2.5 添加mysqld系统服务1.2.6 修改mysql的登录密码 1.3 编译安装PHP服务1.3…...
Cadence学习笔记 2 PCB封装绘制
基于Cadence 17.4,四层板4路HDMI电路 更多Cadence学习笔记:Cadence学习笔记 1 原理图库绘制 目录 2、PCB封装绘制 2、PCB封装绘制 封装尺寸如下。 用Allegro做PCB封装前,要先做焊盘(Allegro 比AD、PADS多一个步骤:绘制…...
网络安全——防火墙
基本概念 防火墙是一个系统,通过过滤传输数据达到防止未经授权的网络传输侵入私有网络,阻止不必要流量的同时允许必要流量进入。防火墙旨在私有和共有网络间建立一道安全屏障,因为网上总有黑客和恶意攻击入侵私有网络来破坏,防火…...
【CSS in Depth 2 精译_074】第 12 章 CSS 排版与间距概述 + 12.1 间距设置(下):行内元素的间距设置
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 ✔️ 12.2 Web 字体12.3 谷歌字体 文章目…...
短视频矩阵抖音SEO源码OEM独立部署
短视频优化矩阵源码涉及对抖音平台上的视频内容进行筛选与排序,目的是增强其在搜索引擎中的可见度,以便更多用户能够浏览到这些视频。而抖音SEO优化系统则是通过构建一个分析框架,来解析抖音上的用户数据、视频信息及标签等元素,并…...
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署 Nginx docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis docker pull redis docker run --…...
在ensp中ACL路由控制实验
一、实验目的 掌握ACL路由控制管理 二、实验要求 要求: 配置路由策略,左右两边不公开区域对方不可达,其他区域可以互相ping通 设备: 1、三台路由器 2、四台交换机 3、四台电脑 4、四台服务器 使用ensp搭建实验环境,如图所…...
μC/OS-Ⅱ源码学习(3)---事件模型
快速回顾 μC/OS-Ⅱ中的多任务 μC/OS-Ⅱ源码学习(1)---多任务系统的实现 μC/OS-Ⅱ源码学习(2)---多任务系统的实现(下) 本文开始,进入事件源码的学习。 事件模型 在一个多任务系统里,各个任务在系统的统筹下相继执行,由于执行速度极快&a…...
Jmeter进阶篇(30)深入探索 JMeter 监听器
前言 在性能测试领域里,Apache JMeter 是一款经典而强大的工具,而其中的监听器(Listeners)组件更是发挥着不可或缺的关键作用。 监听器就像敏锐的观察者,默默记录测试执行过程中的各种数据,作为系统性能分析的数据依据。 本文将带你全方位走进 JMeter 监听器的奇妙世界,…...
做网站用python还是php/2345网址导航官网
今天由方老师带着大家复习前面所讲的知识,下面是方老师记录的日记: 由于大家普遍反映上课的知识量过大,迫切需要时间来消化。因此今天特意抽出一天时间重点消化及练习前两天袁老师讲解的sqlserver方面的知识。上午主要练习:数据库…...
海淀网站建设公司/企业全网推广公司
一.简介mysqlslap是mysql自带的基准测试工具优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。测试时候会创建一个mysqlslap库,并创建一个t1表,进行增删改…...
公司 宜宾网站建设/重庆网站建设推广
目录sequence相关宏及其实现uvm_do系列宏*uvm_create与uvm_send*uvm_rand_send系列宏*start_item与finish_item*pre_do、 mid_do与post_dosequence相关宏及其实现 uvm_do系列宏 uvm_do系列宏主要有以下8个: uvm_do(SEQ_OR_ITEM) uvm_do_pri(SEQ_OR_ITEM, PRIORIT…...
wordpress主机cdn/爱站网关键词查询系统
复习方法(原创经验) 本复习方法是针对过了六级或者专四的同学,至少雅思要6分以上。如果你没过四级,请考pets3,如果你过了四级没过六级,请考pets4. 综合 推荐用书:《全国英语等级考试系列用书考核内容详析与辅助练习(第…...
葫芦岛城乡建设委员会网站/今日油价92汽油价格表
http://acm.hdu.edu.cn/showproblem.php?pid3207 一道看上去好像是线段树的题,不过因为有两种操作(区间增加相同的数,以及将区间中比给出的数小的数更新成给出的数),所以用一般的线段数是不能正确更新的。这题应该是可…...
如何安装wordpress软件/网络营销工资一般多少
02 JVM 线程JVM内存区域JVM运行时内存垃圾回收与算法JAVA四种引用类型GC分代收集算法 VS 分区收集算法GC垃圾收集器JAVA IO/NIOJVM类加载器 03 JAVA集合 接口继承关系和实现LISTSETMAP 04 JAVA多线程并发 JAVA并发知识库JAVA线程实现/创建方式4种线程池线程生命周期…...