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

数据入口:睡眠质量记录数据集 - 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 pdfile_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 npX = 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 pltwcss = []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 StandardScalerX_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_errormodel = 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.xdnf.cn/news/1545223.html

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

相关文章

深度学习(2):梯度下降

文章目录 梯度下降梯度是什么常见梯度下降算法 代码实现批量梯度下降 梯度下降 梯度是什么 类似y ax b这种单变量的函数来说,导数就是它的斜率,这种情况下可以说梯度就是导数。 但在多变量函数中,梯度是一个向量,其分量是各个…

时间序列LSTM实现

这个代码参考了时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)_lstm预测模型-CSDN博客 结合我之前所学的lstm-seq2seq里所学习到的知识对其进行预测 import time import numpy as np import pandas as pd import torch import…

STM32F407之超声波模块使用

#include "sys.h" #include "delay.h" #include "usart.h" #include "includes.h" #include "HC_SR04.h"int main() {OS_ERR err;//错误uart_init(9600);//串口初始化//超声波初始化HC_SR04();//OS初始化 他是第一个运行的函…

Karmada新版本发布,支持联邦应用跨集群滚动升级

摘要:本次升级支持联邦应用跨集群滚动升级,使用户版本发布流程更加灵活可控;透明同事karmadactl 新增了多项运维能力,提供独特的多集群运维体验。 本文分享自华为云社区 《Karmada v1.11 版本发布!新增应用跨集群滚动升…

nfs版本问题导致挂载失败

一、系统环境 环境版本操作系统Linux Mint 22 Wilma内核版本6.8.0-44-genericgcc 版本arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025uboot 版本2020.01开发板Linux版本5.4.31 二、问题描述 内核通过…

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

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

微信小程序——引入 iconfont 矢量图标,如何使用引用阿里巴巴矢量图标

本文介绍如何在小程序中加入图标,效果如下图: 1、访部iconfont-阿里巴巴矢量图标库 找到需要的图标,然后添加入库 将增加好的图标添加到项目中 2、点击更新生成代码 生成后如下图 3、打开生成的css样式文件 4、在小程序中新建/static/iconfon…

AI大模型助力数据消费,构建数据飞轮科学、高效的体系

随着互联网的技术高速发展,越来越多的应用层出不穷,伴随着数据应用的需求变多,为快速响应业务需求,很多企业在初期没有很好的规划的情况下,存在不同程度的烟囱式的开发模式,这样会导致企业不同业务线的数据…

**CentOS7安装redis**

CentOS7安装redis 首先解压压缩包 redis-7.0.0.tar.gz tar -xvf redis-7.0.0.tar.gz接着进入到redis中 cd redis-7.0.0.tar.gz执行make命令编译 make接着执行安装命令 make install之后编译安装完后 程序都会在/usr/local/bin目录下 这里需要将在redis目录中redis.conf配置…

Kubernetes从零到精通(14-Storage)

存储简介 在Kubernetes中,存储是一个关键的部分,用于持久化应用程序的数据。Kubernetes的存储模型支持多种存储类型,并且能根据应用程序的需求动态地提供存储资源。以下是Kubernetes存储的基本概念和机制。 Kubernetes支持很多类型的卷。Pod可…

【Java面向对象高级一08】继承_使用继承的好处

前言 一、继承是什么? 二、使用继承的好处 总结 前言 继承的学习 一、继承是什么? Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。extends(中文意思就是继承)。 继承的意思是&#xf…

Redis实战--Redis的数据持久化与搭建Redis主从复制模式和搭建Redis的哨兵模式

Redis作为一个高性能的key-value数据库,广泛应用于缓存、消息队列、排行榜等场景。然而,Redis是基于内存的数据库,这意味着一旦服务器宕机,内存中的数据就会丢失。为了解决这个问题,Redis提供了数据持久化的机制&#…

C语言 | Leetcode C语言题解之第434题字符串中的单词数

题目&#xff1a; 题解&#xff1a; int countSegments(char * s){int count 0; //count用来记录单词个数for(int i0; i < strlen(s); i){ //遍历字符串 if((i 0 || s[i-1] ) && s[i] ! ) //一个…

Python | Leetcode Python题解之第434题字符串中的单词数

题目&#xff1a; 题解&#xff1a; class Solution:def countSegments(self, s):segment_count 0for i in range(len(s)):if (i 0 or s[i - 1] ) and s[i] ! :segment_count 1return segment_count

【计网】从零开始掌握序列化 --- 实现网络计算器项目

​​​请各位保持头脑清醒&#xff0c; ​​​读些好书&#xff0c;做点有用的事&#xff0c; ​​​快快乐乐地生活。 ​​​ --- 斯蒂芬金 《肖申克的救赎》--- 从零开始掌握序列化 1 知识回顾2 服务器框架3 客户端框架4 运行测试 1 知识回顾 前面两篇文章学习中基础知识…

ROS第六梯:ROS+VSCode+C++消息发布和订阅

第一步&#xff1a;创建ROS工作空间&#xff0c;并在工作空间下创建名为srr_pkg的功能包&#xff0c;具体步骤参考第二章。 第二步&#xff1a;在src下创建publisher.cpp作为发布节点代码文件&#xff0c;创建subscriber.cpp作为订阅节点代码文件&#xff1a; 主要步骤是&#…

数字通云平台智慧政务 login 存在登录绕过

0x01 漏洞描述&#xff1a; 数字通云平台智慧政务OA产品是基于云计算、大数据、人工智能等先进技术&#xff0c;为政府部门量身定制的智能化办公系统。该系统旨在提高政府部门的办公效率、协同能力和信息资源共享水平&#xff0c;推动电子政务向更高层次发展。 数字通云平台 智…

【高分系列卫星简介——高分五号卫星(GF-5)】

高分五号卫星&#xff08;GF-5&#xff09; 高分五号&#xff08;GF-5&#xff09;卫星是中国高分辨率对地观测系统重大专项系列中的一颗重要卫星&#xff0c;主要承担着遥感、测绘等任务。以下是对高分五号卫星的详细介绍&#xff1a; 一、基本信息 国籍&#xff1a;中国研…

Android JNI 调用流程

为啥要用JNI&#xff0c;我个人理解是&#xff0c;Java 代码效率不够高&#xff0c;代码调用底层逻辑隔着一层Java 虚拟机&#xff0c;不能直接操控底层硬件&#xff0c;而C/C 可以直接操控硬件设备&#xff0c;对于需要效率更高的操作&#xff0c;就需要通过C/C 完成。。 比如…

GNU链接器(LD):存储命令(MEMORY)用法及实例解析

0 参考资料 GNU-LD-v2.30-中文手册.pdf GNU linker.pdf1 前言 一个完整的编译工具链应该包含以下4个部分&#xff1a; &#xff08;1&#xff09;编译器 &#xff08;2&#xff09;汇编器 &#xff08;3&#xff09;链接器 &#xff08;4&#xff09;lib库 在GNU工具链中&…