基于数据可视化学习的卡路里消耗预测分析

数据分析实操集合:

1、关于房间传感器监测数据集的探索
2、EEMD-LSTM模型择时策略 — 1.EEMD分解与LSTM模型搭建
3、EEMD-LSTM模型择时策略 — 2. 量化回测
4、国际超市电商销售数据分析
5、基于问卷调查数据的多元统计数据分析与预测(因子分析、对应分析与逻辑回归)
6、手写文本识别
7、语音情感识别
8、电商会员门店消费数据分析
9、糖尿病风险预测模型分析与构建
10、基于卷积神经网络(CNN)和ResNet50的水果与蔬菜图像分类系统
11、学生抑郁情况可视化分析及预测
12、人脸表情识别(GUI实时识别)
13、基于LSTM的机场天气分析及模型预测

运动能量消耗数据分析

Background:数据集包含了来自不同用户的多项体征数据,包括性别、年龄、身高、体重等基本信息,以及运动持续时间、心率和体温等与身体活动相关的数据。

通过分析这些数据,探索用户在进行身体活动时的热量消耗情况,即目标变量Calories,从而为个性化健身计划或健康管理提供数据支持。
数据分析
基础统计分析
影响因素分析
构建预测模型

总结:通过数据分析可视化,清晰直观发现 持续时间越长,燃烧的卡路里就越高。心率跳动与燃烧的卡路里呈正相关。持续时间增加会导致心率和体温增加。

Importing Libraries 导入库

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

from scipy.stats import shapiro, kstest, mannwhitneyu, ttest_ind, levene

from sklearn.preprocessing import LabelEncoder

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.metrics import mean_absolute_error

数据准备

data = pd.read_csv("/home/mw/input/02141492/calories.csv")
data.sample(5)

在这里插入图片描述

data.describe()

在这里插入图片描述

data.select_dtypes('object').describe()
Data Preprocessing 数据预处理
data.shape
data.isnull().sum()

在这里插入图片描述

data.columns = data.columns.str.lower()
# 删除无关特征(如 User_Id)
# data = data.drop(columns=["User_Id"])

del data['user_id']
data.plot.box(subplots=True, figsize=(10,5))
plt.tight_layout()

在这里插入图片描述
身高、体重、心率和体温存在异常值。
Data Distribution 数据分布

import seaborn as sns
print(sns.__version__)
!pip install -U seaborn
import seaborn as sns
print(sns.__version__)

ps:由于histplot 函数是在 seaborn 0.11.0 版本中引入的; seaborn 需更新到 0.11.0 以上。

fig, axes = plt.subplots(4,2, figsize=(10,10))

for i, column in enumerate(data.columns):
    row = i // 2
    col = i % 2

    if column in data.select_dtypes(np.number).columns:
        sns.histplot(data[column], ax=axes[row, col])

    else:
        count_values = data[column].value_counts()
        sns.barplot(x=count_values.index, y=count_values.values, ax=axes[row,col])

    axes[row, col].set_title(f'Distribution of {column}')
    axes[row, col].set_ylabel('frequency')

plt.tight_layout()

在这里插入图片描述

Correlations Analysis 相关性分析
sns.heatmap(data[data.select_dtypes(np.number).columns].corr(), annot=True)

在这里插入图片描述
1.持续时间越长,燃烧的卡路里就越高。
2.心率越快,燃烧的卡路里就越高。
3.年龄和燃烧的卡路里具有较弱的相关性。
4.持续时间增加会导致心率和体温增加。

gender_calories = data.groupby('gender')['calories'].mean()

sns.barplot(x=gender_calories.index, y=gender_calories.values, palette='viridis')
plt.ylabel('average calories')
plt.title('Average Calories per Gender')

在这里插入图片描述
据观察,男性组的平均卡路里燃烧量略高于女性组。

kstest_res = []
kruskal_test = []

fig, axes = plt.subplots(1,2, figsize=(10,5))

for i, gender in enumerate(data['gender'].unique()):

    to_test = data [ data['gender'] == gender]['calories']

    stats, pvalue =  kstest(to_test, 'norm')
    
    if pvalue > 0.05:
        assumption = 'normal'
    else:
        assumption = 'not normal'

    kstest_res.append([gender, pvalue, assumption])
    kruskal_test.append(to_test)

    sns.histplot(to_test, ax=axes[i], palette='viridis')
    axes[i].set_title(f'Distribution for {gender} calories')
    axes[i].set_ylabel('frequency')
    
kstest_df = pd.DataFrame(kstest_res, columns=['gender','pvalue','assumption'])
kstest_df

在这里插入图片描述
如图男性和女性卡路里的分布不呈正态。

stats, pvalue = mannwhitneyu(*kruskal_test, alternative='greater') 

if pvalue <= 0.05:
    assumption = 'reject H0'
else:
    assumption = 'accept H0'

print('Kruskal pvalue:',pvalue,'\nAssumption:',assumption)

在这里插入图片描述
p值表明,男性燃烧的卡路里并不明显高于女性。

Feature Engineering 特征工程
encoder = LabelEncoder()

model_data = data.copy()
model_data['gender'] = encoder.fit_transform(model_data['gender'])

model_data.sample(5)
Predictive Modelling 预测建模

训练和测试

x = model_data[['gender', 'age', 'height', 'weight', 'duration', 'heart_rate',
                'body_temp']]
y = model_data['calories']

x_train, x_test, y_train, y_test = train_test_split(x, y, 
                                                    train_size=0.7, 
                                                    random_state=42)
sns.scatterplot(x=x_train['heart_rate'], 
                y=y_train, 
                color=sns.color_palette('viridis')[4])

sns.scatterplot(x=x_test['heart_rate'], 
                y=y_test, 
                color=sns.color_palette('viridis')[2])

在这里插入图片描述

Random Forest Regressor 随机森林回归
rf_model = RandomForestRegressor(n_estimators=1000, 
                                 max_depth=15, 
                                 max_features=3, 
                                 oob_score=True, 
                                 random_state=42)

rf_model.fit(x_train, y_train)
rf_predicted = rf_model.predict(x_test)
rf_score = rf_model.score(x_test, y_test)
rf_mae = mean_absolute_error(y_test, rf_predicted)
rf_oob = rf_model.oob_score_

rf_df = pd.DataFrame({'model':['Random Forest'], 
                      'r2_score':[rf_score], 
                      'rf_mae':[rf_mae], 
                      'oob_score':[rf_oob]})
sns.scatterplot(x=x_test['heart_rate'], 
                y=y_test, 
                color=sns.color_palette('viridis')[4])
sns.lineplot(x=x_test['heart_rate'], 
             y=rf_predicted, 
             color=sns.color_palette('viridis')[2])

在这里插入图片描述
Key Indicators 关键指标

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

rf_fi = pd.DataFrame({'feature':x.columns, 
                      'importances':rf_model.feature_importances_})

# 对 DataFrame 按照 'importances' 排序
rf_fi_sorted = rf_fi.sort_values(by='importances', ascending=False)

# 使用 seaborn 绘制条形图
sns.barplot(data=rf_fi_sorted, x='importances', y='feature', palette='viridis')

# 显示图表
plt.show()

在这里插入图片描述
持续时间对预测燃烧的卡路里影响最大。
Model Performance 模型性能

rf_df

在这里插入图片描述

# 检查缺失值
print(data.isnull().sum())

# 如果有缺失值,可以选择填充或删除
data = data.dropna()  # 删除缺失值

# 分离特征和目标变量
X = data.drop(columns=["calories"])
y = data["calories"]

在这里插入图片描述

# 标准化特征
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(x)
构建 XGBoost 模型

用 XGBoost 构建预测模型,并通过交叉验证评估模型性能

from xgboost import XGBRegressor
from sklearn.model_selection import train_test_split, cross_val_score

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 初始化 XGBoost 模型
model = XGBRegressor(
    n_estimators=100,  # 树的数量
    learning_rate=0.1,  # 学习率
    max_depth=4,  # 树的最大深度
    random_state=42
)

# 训练模型
model.fit(X_train, y_train)

# 交叉验证评估
cv_scores = cross_val_score(model, X_train, y_train, cv=5, scoring="neg_mean_squared_error")
print("Cross-Validation RMSE:", np.sqrt(-cv_scores).mean())

在这里插入图片描述

模型评估
评估模型在测试集上的性能,并绘制预测结果与实际值的对比图。

# 预测测试集
y_pred = model.predict(X_test)

# 计算评估指标
from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print("MSE:", mse)
print("R²:", r2)

# 绘制预测结果与实际值的对比图
plt.scatter(y_test, y_pred, alpha=0.5)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], color="red", linestyle="--")
plt.xlabel("Actual Calories")
plt.ylabel("Predicted Calories")
plt.title("Actual vs Predicted Calories")
plt.show()

在这里插入图片描述

特征重要性分析

分析特征对模型预测的贡献程度,帮助理解哪些因素对热量消耗的影响最大

# 获取特征重要性
feature_importances = model.feature_importances_
feature_names = x.columns

# 绘制特征重要性条形图
sns.barplot(x=feature_importances, y=feature_names, palette="viridis")
plt.xlabel("Importance")
plt.ylabel("Features")
plt.title("Feature Importances")
plt.show()

在这里插入图片描述
持续时间对预测燃烧的卡路里影响最大。

# 若需要完整数据集以及代码请点击以下链接
https://mbd.pub/o/bread/mbd-aJWUlJ9u

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/977744.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【初阶数据结构】链表的柔光之美

目录 一、为什么需要链表&#xff1f; 二、链表与数组的对比 三、链表节点定义 四、链表基本操作 1. 创建链表 2. 插入节点 头插法&#xff08;时间复杂度O(1)&#xff09; 尾插法&#xff08;时间复杂度O(n)&#xff09; 3. 删除节点 4. 遍历链表 五、进阶操作 1. 反…

计算机网络:应用层 —— 电子邮件

文章目录 电子邮件的起源与发展电子邮件的组成电子邮件协议邮件发送和接收过程邮件发送协议SMTP协议多用途因特网邮件扩展MIME 电子邮件的信息格式 邮件读取协议邮局协议POP因特网邮件访问协议IMAP 基于万维网的电子邮件 电子邮件&#xff08;E-mail&#xff09;是因特网上最早…

AWVS(web)扫描器安装与使用

目录 前言 1. AWVS 简介与功能特性 1.1 什么是 AWVS&#xff1f; 1.2 主要功能特性 2. AWVS 的安装步骤 2.1 系统要求 2.2 安装步骤&#xff08;以 Windows 为例&#xff09; 3. 配置与初始化 3.1 设置扫描目标 3.2 配置扫描选项 4. AWVS 的使用方法 4.1 自动扫描 …

opencv的C++遇到找不到opencv_worldxxxd.dll

如图所示&#xff1a; 将你缺的这个dll文件复制到 C:\Windows\System32 即可

AI提示工程的挑战与演进

目前让AI按照工作流正确的工作依然存在着提示挑战&#xff0c;提示工程实际上是一套逻辑严密的工作。 根据当前技术发展及行业实践&#xff0c;AI按照工作流正确执行任务仍面临显著的提示工程挑战&#xff0c;而提示工程本身也正在从零散经验向系统化、逻辑严密的方法论演进。以…

微信小程序-二维码绘制

wxml <view bindlongtap"saveQrcode"><!-- 二维码 --><view style"position: absolute;background-color: #FFFAEC;width: 100%;height: 100vh;"><canvas canvas-id"myQrcode" style"width: 200px; height: 200px;ba…

蓝桥杯第十六届嵌入式模拟编程题解析

由硬件框图可以知道我们要配置LED 和按键 LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&#xf…

电子科技大学考研复习经验分享

电子科技大学考研复习经验分享 本人情况&#xff1a;本科就读于电科软院&#xff0c;24年2月开始了解考研&#xff0c;24年3月开始数学&#xff0c;9月决定考本院&#xff08;开始全天候图书馆学习&#xff09;并开始专业课学习&#xff0c;11月底开始政治学习&#xff0c;最后…

基于范围选择的进化多目标优化PESA-II-可用于(汽车发动机多目标优化设计/飞机机翼多目标外形优化/电动汽车充电设施布局优化)

基于范围选择的进化多目标优化 PESA-II&#xff08;Pareto Envelope-Based Selection Algorithm II&#xff09;是一种经典的多目标遗传算法&#xff0c;以下是对它的详细介绍&#xff1a;基于范围选择的进化多目标优化PESA-II-可用于&#xff08;汽车发动机多目标优化设计/飞机…

DeepSeek 提示词:基础结构

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

鹏哥c语言数组(初阶数组)

前言&#xff1a; 对应c语言视频54集 内容&#xff1a; 一维数组的创建 数组是一组相同元素的集合&#xff0c; 数组的创建方式 type_t就是数组的元素类型&#xff0c;const_n是一个常量表达式&#xff0c;用来指定数组的大小 c99标准之前的&#xff0c;数组的大小必须是…

Oracle 数据变化量查询

1. DBA_HIST_SEG_STAT可以看出对象的使用趋势&#xff0c;构造如下SQL查询出每个时间段内数据库对象的增长量 select c.SNAP_ID,to_char(c.END_INTERVAL_TIME, yyyy-mm-dd) SNAP_TIME,a.OWNER,a.OBJECT_NAME,a.OBJECT_TYPE,b.DB_BLOCK_CHANGES_DELTAfrom dba_objects a,(selec…

Language Models are Unsupervised Multitask Learners,GPT-2详细讲解

1542M1.542B15.42亿个 背景和动机 1.GPT-1在特定自然语言理解任务标注较少情况下&#xff0c;通过利用大量无标注数据&#xff0c;取得较强性能 2.BERT性能超越GPT-1&#xff0c;GPT-2通过构建更大数据集和模型&#xff0c;同时在zero-shot的多任务学习场景中展示不错性能 创…

ultralytics导出engine之后,用tensorrt c++ api加载报Serialization failed

一。问题复现 1.生成engine 在安装了ultralytics之后&#xff0c;或者直接用源码也一样。运行如下代码 (或者用命令行也行&#xff1a;yolo taskdetect modeexport model/home/kv183/tensorrt_starter/ultralytics-main/weights/yolov8s.pt formatengine &#xff09; from…

Milvus x DeepSeek 搭建低成本高精度 RAG 实战

为什么手握海量数据&#xff0c;却用不出真正的“智能”&#xff1f;要么 AI 模型学艺不精&#xff0c;答非所问&#xff1b;要么技术门槛太高&#xff0c;让普通开发者望而却步。现在&#xff0c;使用阿里云 Milvus 向量检索服务、DeepSeek 大模型和 PAI LangStudio 开发工具&…

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 &#xff08;1&#xff09;提取较亮区域 - pass1 &#xff08;2&#xff09;高斯模糊 - pass2&3 &#xff08;3&#xff…

学习路程五 向量数据库Milvus操作

前序 前面安装好了docker且成功拉取Milvus镜像&#xff0c;启动。通过python成功连接上了数据。接下来就继续更多Milvus的操作 在开始之前&#xff0c;先来简单了解一下向量数据库内一些东西的基本概念 概念描述数据库&#xff08;Database&#xff09;类似与MySQL的database…

pycharm安装教程-PyCharm安装破解步骤【MAC版】

pycharm安装教程-PyCharm2023安装破解步骤【MAC版】 破解安装安装包获取 今天来给大家分享 Mac 系统安装 PyCharm&#xff0c;附带资源 破解安装&#xff0c; PyCharm 相关就不叙述了&#xff0c;直接开始安装&#xff01; 破解安装 打开下载的安装包 PyCharm2023.dmg&#x…

简单介绍 SSL 证书类型: DV、OV、EV 的区别

SSL证书类型DV、OV、EV 区别&#xff1a; DV(域名验证型)SSL证书 OV(组织验证型)SSL证书 EV(扩展验证型)SSL证书

NLP的预处理数据

处理文本数据的主要工具是Tokenizer。Tokenizer根据一组规则将文本拆分为tokens。然后将这些tokens转换为数字&#xff0c;然后转换为张量&#xff0c;成为模型的输入。模型所需的任何附加输入都由Tokenizer添加。 如果您计划使用预训练模型&#xff0c;重要的是使用与之关联的…