构建预测睡眠质量模型_相关性分析,多变量分析和聚类分析

news2024/11/16 21:38:56

数据入口:睡眠质量记录数据集 - Heywhale.com

本数据集目的是探究不同因素是如何影响睡眠质量和整体健康的。

数据说明

字段说明
Heart Rate Variability心率变异性:心跳时间间隔的模拟变化
Body Temperature体温:以摄氏度为单位的人工生成体温
Movement During Sleep睡眠期间活动:睡眠时活动量的合成数据
Sleep Duration Hours睡眠时长:模拟生成的总睡眠小时数
Sleep Quality Score睡眠质量评分:代表睡眠质量的合成评分
Caffeine Intake (mg)咖啡因摄入量(毫克):以毫克为单位的模拟咖啡因摄入量
Stress Level压力水平:压力水平的模拟指数
Bedtime Consistency睡眠规律性:睡眠时间一致性的模拟值;范围 0-1,数值越低表示规律性越差
Light Exposure Hours日间光照时长:白天接触到光照的时长

一:相关性分析

首先进行相关性分析,以探索这些变量之间的关联,特别是与睡眠质量评分(Sleep_Quality_Score)的关系。

import pandas as pd

file_path = 'wearable_tech_sleep_quality.csv'
data = pd.read_csv(file_path)

correlation_matrix = data.corr()

correlation_matrix

相关性分析结果:

  • 睡眠质量评分(Sleep_Quality_Score)与其他变量的相关性普遍较弱。其中,与咖啡因摄入量(Caffeine_Intake_mg)的相关性最强,为-0.722,表明咖啡因摄入量与睡眠质量评分呈负相关。
  • 其他变量之间的相关性也普遍不强,但有一些值得注意的关联,例如心率变异性(Heart_Rate_Variability)与就寝时间一致性(Bedtime_Consistency)之间的相关性为0.048,以及睡眠期间的运动(Movement_During_Sleep)与就寝时间一致性(Bedtime_Consistency)之间的相关性为-0.039。

下一步,我将进行多变量分析,使用多元线性回归来探究多个变量如何共同影响睡眠质量评分。

二:多变量分析

from sklearn.linear_model import LinearRegression
import numpy as np

X = data.drop('Sleep_Quality_Score', axis=1)
y = data['Sleep_Quality_Score'] 

model = LinearRegression()

model.fit(X, y)

coefficients = model.coef_

coefficients_df = pd.DataFrame(coefficients, X.columns, columns=['Coefficient'])
coefficients_df

多变量分析结果(多元线性回归):

多元线性回归模型的系数如下:

  • 心率变异性(Heart_Rate_Variability):0.0036
  • 体温(Body_Temperature):-0.0107
  • 睡眠期间的运动(Movement_During_Sleep):-0.2030
  • 睡眠时长(Sleep_Duration_Hours):0.1324
  • 咖啡因摄入量(Caffeine_Intake_mg):-0.0229
  • 压力水平(Stress_Level):-0.0418
  • 就寝时间一致性(Bedtime_Consistency):-0.5801
  • 光照暴露时间(Light_Exposure_hours):0.0033

这些系数表明,每个变量对睡眠质量评分的相对影响。例如,就寝时间一致性(Bedtime_Consistency)的系数为-0.5801,这意味着就寝时间一致性每增加一个单位,睡眠质量评分预计会减少0.5801个单位。

下面将进行聚类分析,以识别数据中的自然分组,这有助于我们理解不同人群的睡眠和健康模式。

三:聚类分析

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

wcss = []

for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, init='k-means++', random_state=42)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)

plt.figure(figsize=(10, 5))
plt.plot(range(1, 11), wcss, marker='o', linestyle='--')
plt.title('Elbow Method to Find Optimal Number of Clusters')
plt.xlabel('Number of Clusters')
plt.ylabel('Within-Cluster Sum of Squares (WCSS)')
plt.grid(True)
plt.show()

使用肘部法则(Elbow Method)来确定最佳的聚类数。从图中可以看出,随着聚类数量的增加,组内平方和(WCSS)逐渐减小。理想的聚类数通常是在WCSS下降速度开始减缓的点。根据这个图表,我们可以选择2或3个聚类作为最佳数量。

现在,我将使用KMeans算法进行聚类分析,选择3个聚类作为例子,并展示每个聚类中心的特点。

kmeans = KMeans(n_clusters=3, init='k-means++', random_state=42)
clusters = kmeans.fit_predict(X)

cluster_centers = kmeans.cluster_centers_
cluster_centers_df = pd.DataFrame(cluster_centers, columns=X.columns)
cluster_centers_df['Cluster'] = ['Cluster 1', 'Cluster 2', 'Cluster 3']
cluster_centers_df = cluster_centers_df.set_index('Cluster')
cluster_centers_df.T  

聚类分析结果(KMeans,3个聚类):

每个聚类中心的特点如下:

  • Cluster 1

    • 心率变异性(Heart_Rate_Variability):70.395
    • 体温(Body_Temperature):36.520
    • 睡眠期间的运动(Movement_During_Sleep):1.973
    • 睡眠时长(Sleep_Duration_Hours):7.494
    • 咖啡因摄入量(Caffeine_Intake_mg):46.825
    • 压力水平(Stress_Level):4.903
    • 就寝时间一致性(Bedtime_Consistency):0.493
    • 光照暴露时间(Light_Exposure_hours):8.006
  • Cluster 2

    • 心率变异性(Heart_Rate_Variability):70.387
    • 体温(Body_Temperature):36.563
    • 睡眠期间的运动(Movement_During_Sleep):2.033
    • 睡眠时长(Sleep_Duration_Hours):7.582
    • 咖啡因摄入量(Caffeine_Intake_mg):277.643
    • 压力水平(Stress_Level):5.007
    • 就寝时间一致性(Bedtime_Consistency):0.508
    • 光照暴露时间(Light_Exposure_hours):8.146
  • Cluster 3

    • 心率变异性(Heart_Rate_Variability):70.380
    • 体温(Body_Temperature):36.532
    • 睡眠期间的运动(Movement_During_Sleep):2.017
    • 睡眠时长(Sleep_Duration_Hours):7.396
    • 咖啡因摄入量(Caffeine_Intake_mg):157.392
    • 压力水平(Stress_Level):4.935
    • 就寝时间一致性(Bedtime_Consistency):0.511
    • 光照暴露时间(Light_Exposure_hours):8.001

这些聚类展示了数据中的自然分组,每个聚类都有其独特的特征。例如,Cluster 2的咖啡因摄入量显著高于其他两个聚类,这可能表明这个聚类中的个体可能有更高的咖啡因依赖性,这可能会影响他们的睡眠质量。

四:构建预测睡眠质量线性回归模型

首先,我将进行数据预处理,包括处理缺失值、异常值,以及特征选择。然后,我将选择适当的模型来构建预测睡眠质量的模型。考虑到数据的性质,我会选择线性回归模型,因为它简单且易于解释。接着,我将使用训练数据集来训练模型。最后,我将使用测试数据集来评估模型的性能。

from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

imputer = SimpleImputer(strategy='mean')
X_train_imputed = imputer.fit_transform(X_train)
X_test_imputed = imputer.transform(X_test)

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train_imputed)
X_test_scaled = scaler.transform(X_test_imputed)

上述代码使用均值填充策略填充了训练集和测试集中的缺失值,并使用标准缩放方法对数据进行了标准化处理。下一步,我将选择线性回归模型来构建预测睡眠质量的模型,并使用训练数据集进行训练。

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

model = LinearRegression()

model.fit(X_train_scaled, y_train)

y_pred = model.predict(X_test_scaled)

mse = mean_squared_error(y_test, y_pred)

mse

模型训练与评估结果:

已经使用线性回归模型训练了模型,并且模型已经拟合了训练数据。使用测试数据集评估模型的性能,得到的均方误差(MSE)为3.93。MSE是一个衡量模型预测准确性的指标,值越小表示模型预测越准确。总结来说,这个线性回归模型能够较好地预测睡眠质量。

想要探索多元化的数据分析视角,可以关注之前发布的相关内容。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Multisim简体中文版百度云下载(含安装步骤)

如大家所熟悉的,Multisim是一款基于电路仿真的软件,可用于电子工程师、电子爱好者和学生进行电路设计、分析和调试。Multisim具有完整的电路设计和仿真功能,可支持模拟电路、数字电路,以及混合电路。 Multisim可以模拟不同电路的…

【数据结构】排序算法系列——归并排序(附源码+图解)

归并排序 归并排序从字面上来看,它的大致核心应与归并有关——归并拆分开来,变成归类和合并,归类则是将数组进行有序化,合并则是将两个有序的数组进行合并变成一个有序的数组。 它的特点在于并不是一开始就将整个数组进行归类和…

MODBUS TCP 转 CANOpen

产品概述 SG-TCP-COE-210 网关可以实现将 CANOpen 接口设备连接到 MODBUS TCP 网络中。用户不需要了解具体的 CANOpen 和 Modbus TCP 协议即可实现将CANOpen 设备挂载到 MODBUS TCP 接口的 PLC 上,并和 CANOpen 设备进行数据交互。 产品特点 &#xf…

Qt 构建目录

Qt Creator新建项目时,选择构建套件是必要的一环: 构建目录的默认设置 在Qt Creator中,项目的构建目录通常是默认设置的,位于项目文件夹内的一个子文件夹中,如:build-项目名-Desktop_Qt_版本号_编译器类型_…

【Linux-基础IO】文件描述符重定向原理缓冲区

文件描述符 文件描述符的概念和原理 通过上述内容,我们知道使用 open 系统调用打开文件时,系统会返回一个文件描述符。这个描述符用于后续的文件操作。 在C语言中默认会打开三个输入输出流,分别是stdin,stdout,stde…

JSP(Java Server Pages)基础使用二

简单练习在jsp页面上输出出乘法口诀表 既然大家都是来看这种代码的人了&#xff0c;那么这种输出乘法口诀表的这种简单算法肯定是难不住大家了&#xff0c;所以这次主要是来说jsp的使用格式问题。 <%--Created by IntelliJ IDEA.User: ***Date: 2024/7/18Time: 11:26To ch…

Web端云剪辑解决方案,提供多轨视频、音频、特效、字幕轨道可视化编辑

传统视频剪辑软件的繁琐安装、高昂硬件要求以及跨平台协作的局限性&#xff0c;让无数创意者望而却步。美摄科技作为云端视频编辑技术的领航者&#xff0c;携其革命性的Web端云剪辑解决方案&#xff0c;正重新定义视频创作的边界&#xff0c;让专业级视频剪辑触手可及&#xff…

LeetCode 909. 蛇梯棋

LeetCode 909. 蛇梯棋 给你一个大小为 n x n 的整数矩阵 board &#xff0c;方格按从 1 到 n2 编号&#xff0c;编号遵循 转行交替方式 &#xff0c;从左下角开始 &#xff08;即&#xff0c;从 board[n - 1][0] 开始&#xff09;的每一行改变方向。 你一开始位于棋盘上的方格 …

微服务(一)

目录 一、概念 1、单体架构 2、微服务 3、springcloud 二、微服务的拆分 1、微服务的拆分原则 1.1 什么时候拆 1.2 怎么拆 2、服务调用 2.1 resttemplate 2.2 远程调用 一、概念 1、单体架构 单体架构&#xff08;monolithic structure&#xff09;&#xff1a;顾名…

项目启动卡住不动Property ‘mapperLocations‘ was not specified.

问题如上图所示&#xff1b; 原因&#xff1a;在mapper打了个断点&#xff01;

js实现多行文本控件textarea,根据文本内容自适应窗口全部显示

概述 本人在使用html控件textarea&#xff0c;多行显示的时候&#xff0c;希望根据后台实际的文本&#xff0c;来全部显示文本内容&#xff0c;而不用再去操作滚动条查看全部文本。 本功能实现的难点在于&#xff0c;计算当前文本显示有多少行。 软件环境 编辑器&#xff1a…

8.11Zero Crossing Detection (零交叉检测)

基本概念 零交叉检测是一种基于二阶导数的边缘检测方法&#xff0c;它通过查找二阶导数过零点来定位边缘。 注意: OpenCV没有直接提供这种检测方法&#xff0c;但可以通过结合其他函数来实现。 在OpenCV中&#xff0c;基于C的Zero Crossing Detection&#xff08;零交叉检测&…

关于PHP方面需要掌握的一些基础语法

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于【PHP的基础语法】相关内容&#xff01;…

Unity开发绘画板——03.简单的实现绘制功能

从本篇文章开始&#xff0c;将带着大家一起写代码&#xff0c;我不会直接贴出成品代码&#xff0c;而是会把写代码的历程以及遇到的问题、如何解决这些问题都记录在文章里面&#xff0c;当然&#xff0c;同一个问题的解决方案可能会有很多&#xff0c;甚至有更好更高效的方式是…

零售业的数字化转型与消费者体验升级

在数字化浪潮的推动下&#xff0c;零售业正经历着前所未有的变革。数字化转型不仅为零售商带来了新的商业模式和运营效率的提升&#xff0c;更重要的是&#xff0c;它极大地提升了消费者的购物体验。金智维将探讨零售业如何通过数字化转型&#xff0c;实现线上线下融合、智能推…

【架构】NewSQL

文章目录 NewSQLTiDBTiDB 主要组件特点使用场景安装与部署 推荐阅读 NewSQL NewSQL是一种数据库管理系统(DBMS)的类别&#xff0c;它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说&#xff0c;NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务…

通过pyenv local 3.6.1 这里设置了当前目录的python版本,通过pycharm基于这个版本创建一个虚拟环境

要在 PyCharm 中基于你通过 pyenv local 设置的 Python 版本创建虚拟环境&#xff0c;可以按照以下步骤进行操作&#xff1a; 步骤 1: 获取当前使用的 Python 路径 通过 pyenv 查找当前项目下的 Python 解释器路径&#xff0c;使用以下命令&#xff1a; pyenv which python …

Thread , ThreadLocal , ThreadLocalMap , Entry 之间的关系?

Thread , ThreadLocal , ThreadLocalMap , Entry 之间的关系&#xff1f; 首先ThradLocal是线程的本地副本&#xff0c;怎么理解这句话呢&#xff1f;一个Thread都有一个它自己的ThreadLocalMap。ThreadLocalMap不是HashMap的结构&#xff0c;而是一个Entry数组&#xff0c;里面…

报错解决方案

大模型-报错解决方案 百度千帆大模型 仅个人笔记使用&#xff0c;感谢点赞关注 百度千帆大模型 未开通付费模型 qianfan.errors.APIError: api return error, req_id: code: 17, msg: Open api daily request limit reached 可能的原因: 未开通所调用服务的付费权限&#xff0…

【设计模式-观察者模式】

定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;用于定义一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象&#xff08;被观察者&#xff09;的状态变化。当主题状态发生变化时&#xff0c;所有依赖于它的观察…