基于python个人睡眠质量分析设计与实现

发布时间:2024-12-19 00:59

《运动与睡眠》分析运动对睡眠质量的影响 #生活技巧# #健康生活方式# #健康生活方式书籍# #睡眠管理#

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 

1. 项目简介

        Sleep Cycle(SC;NorthCube,Gothenburg,Sweden)是一款可在基于android和iOS设备上使用的移动电话应用程序。SC是一个智能闹钟,它可以跟踪你的睡眠模式,并在浅睡眠中唤醒你。SC会跟踪整晚的睡眠情况,并使用30分钟的窗口,在这个窗口中,警报会在最轻的阶段(即浅睡眠)结束,达到所需的警报时间。SC通过两种运动检测模式中的一种来进行睡眠运动检测:(i)使用内置麦克风分析运动的麦克风,或(ii)使用手机内置加速计的加速计。

        本项目利用 pandas + Matplotlib + seaborn + sklearn 等工具包,对睡眠数据进行探索式可视化分析,并构建 KNN、LR、决策树、随机森林等算法实现对睡眠质量的预测建模。

2. 功能组成

        基于python个人睡眠质量分析建模的功能主要包括:

3. 数据读取和预处理

        本项目采用 SC提供的数据,并通过iOS上的Northcube的Sleep Cycle应用程序收集。

    Start-开始睡眠时间
    End-结束睡眠时间
    Sleep quality-睡眠质量
    Time in bed-躺在床上的时间
    Wake up-醒来状态
    Sleep Notes-睡眠笔记
    Heart rate-睡眠心率
    Activity (steps)-活动(步骤)

        缺失值分析,检查整个数据集中的空部分,红色部分缺少数据:

        “Wake up”、“Sleep Notes”和“Heart rate”功能中缺少数据。我们可以注意到“卧床时间”的特征是从“开始”和“结束”两个方面来计算的。正如我们所知,睡眠质量不仅取决于睡眠的持续时间“在床上的时间”,还取决于你睡眠的“开始”时刻。

df['Start time'] = pd.Series([val.time() for val in df['Start']])

df['End time'] = pd.Series([val.time() for val in df['End']])

df['Start time in second'] = df['Start time'].apply(lambda x: (x.hour*60+x.minute)*60 + x.second)

df['End time in second'] = df['End time'].apply(lambda x: (x.hour*60+x.minute)*60 + x.second)

4. 数据探索式可视化分析

4.1 非空特征间的相关性

fig = plt.figure(figsize = (12,10))

r = sns.heatmap(df.corr(),cmap='Oranges')

r.set_title('Correlation')

        检查特征与“睡眠质量”的相关性:

df.corr()['Sleep quality'].sort_values(ascending = False)

Sleep quality 1.000000

Time in bed 0.695206

Start time in second 0.234936

End time in second 0.076523

Heart rate -0.037846

Activity (steps) -0.190491

        很明显,“卧床时间”与“睡眠质量”的关系最大,除了它本身。睡眠时间的“开始时间”与“结束时间”的关系更大。

4.2 全局特征 pairplot

4.3 “睡眠质量”和“卧床时间”与单位秒的联合绘图

4.4 开始睡眠和结束睡眠时间的柱状图

4.5 步数 Steps 的分布柱状图

        从上面的柱状图来看,“步数”不是睡眠时的“步数”,而是白天的“步数”,代表白天的活动。

4.6 “睡眠质量”和“活动性”特征与秒级别单位的联合图。

df_new.corr()['Sleep quality'].sort_values(ascending = False)

plt.figure(figsize=(10,6))

plt.scatter(df_new['Sleep quality'],df_new['Activity (steps)'], c="g", alpha=0.5, marker=r'$\clubsuit$',

label="Sleep quality vs. Steps")

plt.xlabel("Sleep quality")

plt.ylabel("Steps during the day")

plt.legend(loc='upper left')

plt.show()

        如果我们只看“睡眠质量”和“步数 step ”之间的相关性,它们就没有那么大的关系了。根据经验,人们普遍认为,白天大量活动可以改善睡眠质量。然而,我们在这里没有看到这种关系。

5. 机器学习建模 Machine Learning

5.1 训练集和测试集划分

X = df[['Time in bed', 'Start time in second','End time in second','Activity (steps)']].values

y = df['Sleep quality'].values

from sklearn.model_selection import train_test_split

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

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

scaler.fit(X_train)

X_train = scaler.transform(X_train)

X_test = scaler.transform(X_test)

5.2 LinearRegression Model

from sklearn.linear_model import LinearRegression

lm = LinearRegression()

lm.fit(X_train,y_train)

lm.score(X_test,y_test)

print('test accuracy:', lm.score(X_test,y_test))

5.3 KNN (K nearest neighbors) model

from sklearn.neighbors import KNeighborsClassifier

error_rate =[]

for i in range(1,20):

knn = KNeighborsClassifier(n_neighbors=i)

knn.fit(X_train,y_train)

pred_i = knn.predict(X_test)

error_rate.append(np.mean(pred_i != y_test))

plt.figure(figsize=(10,6))

plt.plot(range(1,20),error_rate, color ='red',linestyle='dashed',marker='v',

markerfacecolor = 'blue', markersize=10)

plt.title('Error Rate vs. K value')

plt.xlabel('K')

plt.ylabel('Error Rate')

         同理构建Logistic Regression Model、Decision Tree Model、Random Forest Model 、Support Machine Vector (SVM) Algorithm等机器学习模型,受篇幅限制,此处省略。

        对多个模型的预测结果进行对比:

Linear Regresion Model precision: 0.41236039548039705

KNN Model precision: 0.06741573033707865

Logistic Regression Model precision: 0.03932584269662921

Decision Tree Model precision: 0.05056179775280899

Random Tree Model precision: 0.03932584269662921

Support Machine Vector precision: 0.033707865168539325

6. 睡眠质量可视化分析预测系统

6.1 系统首页与注册登陆

6.2 睡眠质量影像因素分析

6.3 睡眠质量相关性分析

6.4 睡眠质量评分预测

7. 总结

        本项目利用 pandas + Matplotlib + seaborn + sklearn 等工具包,对睡眠数据进行探索式可视化分析,并构建 KNN、LR、决策树、随机森林等算法实现对睡眠质量的预测建模。

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 CSDN 官方提供的学长 QQ 名片 :)

精彩专栏推荐订阅:

1. Python 毕设精品实战案例
2. 自然语言处理 NLP 精品实战案例
3. 计算机视觉 CV 精品实战案例

网址:基于python个人睡眠质量分析设计与实现 https://www.yuejiaxmz.com/news/view/512267

相关内容

睡眠质量分析:用数学建模提高您的健康生活
【毕业设计】大数据睡眠数据分析与可视化
基于Python的个人健康管理系统的设计与实现
基于python+flask框架的健康管理系统的设计与实现(开题+程序+论文) 计算机毕设
Python中的生活数据分析与个人健康监测.pptx
python基于天气预测的生活规划系统的设计与实现
基于Python的智能健康管理与监测系统设计与实现 毕业设计开题报告
基于python的城市道路智慧交通管理系统的设计与实现
睡眠秘密:睡眠与健康的关系研究1.背景介绍 睡眠是人类的基本生理需求之一,对于人类的健康和生活质量有着重要的影响。近年来
基于Python实现智能健身管理系统计算机毕业设计

随便看看