【python】基于 生活方式与健康数据预测数据集(Lifestyle and Health Risk Prediction)的可视化练习,附数据集源文件。

一、数据集概述​

  • 1、基本定位:模拟真实世界个人生活方式与健康数据的合成数据集,旨在帮助数据科学家、机器学习- -工程师及学生安全构建和测试健康风险预测模型,无需使用敏感医疗数据。
  • 2、核心规模:
    行数:5000 行(可调整,支持扩展生成更多数据)
    列数:12 列(含 11 个特征列 + 1 个目标变量列)
  • 3、数据属性:
    数据类型:混合类型,包含数值型(如年龄、体重)和分类型(如运动频率、吸烟习惯)
    生成工具:通过 Python 库(NumPy、Faker)完全合成
  • 4、授权与作者信息:
    许可证:CC0 公共领域许可证,可自由用于研究、学习或商业项目
    源地址:https://www.kaggle.com/datasets/miadul/lifestyle-and-health-risk-prediction
    作者:Arif Miah(身份:机器学习工程师、Kaggle 专家、数据科学家,
    邮箱:arifmiahcse@gmail.com)

文件下载:链接:https://pan.quark.cn/s/9b0b1e71337e

通过网盘分享的文件:生活方式与健康

链接: https://pan.baidu.com/s/1V3iIU2y8s_MqOwV8fsK9Dg?pwd=17yp 提取码: 17yp

python 复制代码
# 一、数据概况
# 数值型特征的描述性统计(保留两位小数)
print('数值型特征的描述性统计:')
print(df[['age', 'weight', 'height','sleep', 'bmi']].describe().round(2))

# 分类型特征的描述性统计
for col in ['exercise','sugar_intake','smoking', 'alcohol','married', 'profession', 'health_risk']:
    print(f'\n{col}的类别分布:')
    print(df[col].value_counts())
1. 数值型特征
特征 计数 均值 标准差 最小值 25%分位数 50%分位数 75%分位数 最大值
age 5000.00 48.81 17.91 18.00 34.00 49.00 64.00 79.00
weight 5000.00 77.36 18.71 45.00 61.00 77.00 94.00 109.00
height 5000.00 171.93 15.82 145.00 158.00 171.50 186.00 199.00
sleep 5000.00 7.00 1.43 3.00 6.00 7.00 8.00 10.00
bmi 5000.00 26.84 8.25 11.40 20.30 26.00 32.40 51.40

从数值型特征的描述性统计来看:

  • 年龄(age)分布在 18 到 79 岁之间,平均年龄接近 49 岁,标准差 17.91 说明年龄分布有一定的离散程度。
  • 体重(weight)范围从 45 公斤到 109 公斤,均值为 77.36 公斤。
  • 身高(height)在 145 厘米到 199 厘米之间,平均身高约为 171.93 厘米。
  • 睡眠时间(sleep)平均为 7 小时,标准差 1.43 表明大部分人的睡眠时间相对集中在均值附近。
  • 身体质量指数(bmi)的均值为 26.84,不同个体之间的 BMI 差异较大,标准差为 8.25。
2. 分类型特征
  • 运动频率(exercise:'medium'(中等)频率的人数最多,有 1985 人,其次是 'low'(低)、'high'(高)和 'none'(无)。
  • 糖摄入水平(sugar_intake:'medium'(中等)摄入水平的人数最多,为 2511 人,'low'(低)和 'high'(高)依次减少。
  • 吸烟习惯(smoking:不吸烟('no')的人数占比较大,有 4023 人,吸烟('yes')的有 977 人。
  • 饮酒习惯(alcohol:不饮酒('no')的人数为 3741 人,饮酒('yes')的有 1259 人。
  • 婚姻状况(married:已婚('yes')的人数为 3018 人,未婚('no')的有 1982 人。
  • 职业(profession:各个职业的人数分布相对较为均匀,学生('student')、农民('farmer')、司机('driver')等职业人数都在 600 - 644 人之间。
  • 健康风险(health_risk:高风险('high')的人数较多,有 3490 人,低风险('low')的有 1510 人。

二、特征相关性分析

1. 与健康风险高相关性较高的前 10 个特征
python 复制代码
# 二、特征相关性分析
import matplotlib.pyplot as plt
import seaborn as sns
# 将分类型变量进行编码
df_encoded = pd.get_dummies(df, columns=['exercise','sugar_intake','smoking', 'alcohol','married', 'profession', 'health_risk'])
# 计算相关系数矩阵(保留两位小数)
correlation_matrix = df_encoded.corr().round(2)
# 查看与health_risk_high相关性较高的前10个特征
top_10_features = correlation_matrix['health_risk_high'].sort_values(ascending=False)[1:11]
print(top_10_features)
# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']
# 显示负号
plt.rcParams['axes.unicode_minus'] = False
# 绘制热力图
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=False, cmap='coolwarm')
plt.title('特征相关性热力图')
plt.show()
特征 与 health_risk_high 的相关性系数
age 0.38
bmi 0.36
weight 0.33
smoking_yes 0.25
alcohol_yes 0.18
exercise_low 0.18
sugar_intake_high 0.16
exercise_none 0.12
married_no 0.02
profession_driver 0.02

年龄(age)、身体质量指数(bmi)和体重(weight)与高健康风险的相关性较强。这可能意味着随着年龄的增长、身体质量指数和体重的增加,健康风险升高的可能性更大。

吸烟(smoking_yes)和饮酒(alcohol_yes)的习惯也与高健康风险有一定的相关性,说明不良的生活习惯会增加健康风险。

运动频率低(exercise_low)和不运动(exercise_none)同样与高健康风险相关,强调了运动对健康的重要性。

而婚姻状况为未婚(married_no)和职业为司机(profession_driver)与高健康风险的相关性较弱。

2. 特征相关性热力图

热力图可以直观地展示所有特征之间的相关性。颜色越接近暖色(如红色)表示正相关性越强,越接近冷色(如蓝色)表示负相关性越强。

三、不同类别特征下健康风险分布

python 复制代码
# 三、不同类别特征下健康风险分布
# 定义分类特征列表
categorical_features = ['exercise','sugar_intake','smoking', 'alcohol','married', 'profession']

# 绘制不同类别特征下健康风险分布条形图
for feature in categorical_features:
    cross_tab = pd.crosstab(df[feature], df['health_risk'])
    cross_tab.plot(kind='bar')
    plt.title(f'{feature} 与健康风险分布')
    plt.xlabel(feature)
    plt.xticks(rotation=45)
    plt.ylabel('数量')
    plt.show()
1. 运动频率(exercise)与健康风险分布

从图中可以推测,运动频率为 'none'(无)和 'low'(低)的人群中,健康风险为 'high'(高)的比例相对较高,而运动频率为 'high'(高)的人群中健康风险为 'low'(低)的比例相对较高。这表明增加运动频率可能有助于降低健康风险。

2. 糖摄入水平(sugar_intake)与健康风险分布

当糖摄入水平为 'high'(高)时,健康风险为 'high'(高)的人数较多,而糖摄入水平为 'low'(低)时,健康风险为 'low'(低)的人数相对较多。这暗示了控制糖的摄入量可能对健康有益。

3. 吸烟习惯(smoking)与健康风险分布

吸烟('yes')的人群中健康风险为 'high'(高)的比例明显高于不吸烟('no')的人群,推测吸烟对健康可能有不良影响。

4. 饮酒习惯(alcohol)与健康风险分布

饮酒('yes')的人群健康风险为 'high'(高)的比例相对不饮酒('no')的人群要高,说明饮酒可能增加健康风险。

5. 婚姻状况(married)与健康风险分布

已婚('yes')和未婚('no')人群的健康风险分布有一定差异,已婚人群中健康风险为 'low'(低)的比例相对较高,推测婚姻生活可能对健康有积极影响。

6. 职业(profession)与健康风险分布

不同职业的健康风险分布有所不同,例如某些职业(如 'driver' 司机)健康风险为 'high'(高)的比例相对较高,这可能与职业的工作环境、工作压力等因素有关。

免责声明

  1. 数据性质说明 :本数据集为通过Python(NumPy、Faker)完全合成的模拟数据,仅包含年龄、体重、运动频率等生活方式相关特征及基于启发式规则生成的"健康风险"标签,不涉及任何真实个人的医疗记录、隐私信息或临床诊断数据,无法替代专业医疗数据的准确性与完整性

  2. 用途限制 :数据集仅用于数据科学学习、机器学习模型训练、数据预处理实践等非医疗场景,不得用于实际医疗诊断、健康风险评估、疾病预测等涉及人身健康决策的用途,亦不得作为医疗建议、健康干预方案制定的依据。

  3. 结果局限性:基于本数据集训练的模型或得出的分析结论(如特征与健康风险的关联),仅反映模拟数据中的统计规律,不代表真实世界中生活方式与健康状况的必然因果关系,其预测结果或分析结论不具备医学参考价值。

  4. 专业建议指引:若有健康评估、疾病诊断、医疗咨询等需求,应及时咨询具备合法资质的医疗机构或专业医护人员,以获取科学、准确的医疗服务,切勿依赖本数据集及相关分析结果做出健康决策。

相关推荐
Pluchon2 小时前
硅基计划5.0 MySQL 叁 E-R关系图&联合/多表查询&三大连接&子查询&合并查询
开发语言·数据库·学习·mysql
kyle~2 小时前
C++---嵌套类型(Nested Types)封装与泛型的基石
开发语言·c++·算法
sali-tec2 小时前
C# 基于halcon的视觉工作流-章48-短路断路
开发语言·图像处理·人工智能·算法·计算机视觉
无敌最俊朗@3 小时前
解决 QML 中使用 Qt Charts 崩溃的三个关键步骤
开发语言·qt
星期天要睡觉3 小时前
大模型(Large Language Model, LLM)——什么是大模型,大模型的基本原理、架构、流程
人工智能·python·ai·语言模型
会飞的小新3 小时前
C 标准库之 <errno.h> 详解与深度解析
c语言·开发语言
Q_Q19632884754 小时前
python+uniapp基于微信美食点餐系统小程序
spring boot·python·微信·django·flask·uni-app·node.js
KIKIiiiiiiii4 小时前
微信个人号开发中如何高效实现API二次开发
java·前端·python·微信
胡八一4 小时前
30 分钟上手 exp4j:在 Java 中安全、灵活地计算数学表达式
java·开发语言·安全