温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / 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 “睡眠质量”和“活动性”特征与秒级别单位的联合图。

# 特征与睡眠质量"sleep quality" 的相关性
df_new.corr()['Sleep quality'].sort_values(ascending = False)# Scatter plot
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)
# In order to normalize the features, it is better to use MinMaxScaler
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 KNeighborsClassifiererror_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. 总结

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

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。

技术交流认准下方 CSDN 官方提供的学长 Wechat / QQ 名片 :)

精彩专栏推荐订阅:

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

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

  1. python网络爬虫的流程图_基于Python的网络爬虫的设计与实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...

  2. python信息采集管理系统_基于Python的求职信息采集分析系统设计与实现

    基于 Python 的求职信息采集分析系统设计与实现 关鑫洁 ; 黄思奇 ; 位磊 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2020(000)003 [摘要] 为了便于求职 ...

  3. java课程教学质量分析_基于jsp的教学质量分析辅助决策学员评估系统-JavaEE实现教学质量分析辅助决策学员评估系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的教学质量分析辅助决策学员评估系统, 该项目可用各类java课程设计大作业中, 教学质量分析辅助决策学员评估系统的系 ...

  4. 可视化平台python_基于Python的可视化数据分析平台设计与实现

    Computer Era No. 12 2017 0 引言 随着云计算.物联网.社交网络等的兴起和数据库技术的成熟,社会中的各类数据正在以前所未有的速度增长.传统的数据处理方式难以发掘出海量数据中所隐 ...

  5. python如何读dat数据_如何用Python进行数据质量分析

    概述 数据挖掘的第一步工作是数据准备,而数据准备的第一步就是数据质量分析了.本篇文章着重介绍如何使用Python进行数据质量分析的初步工作,属于比较基础的入门教程. 为什么要进行数据质量分析 根据百度 ...

  6. python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx

    湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...

  7. 基于python可视化的网页搜索引擎设计#毕业设计

    开发环境 项目编号:基于python可视化的网页搜索引擎设计#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5 ...

  8. python微博评论情感分析_基于Python的微博情感分析系统设计

    2019 年第 6 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Python 的微博情感分析系统设计 王 欣 周文龙 (武汉工程大学邮电 ...

  9. 基于Python的图书推荐系统的设计与实现

    基于Python的图书推荐系统的设计与实现 课题描述 在这个数据爆炸的年代,人们的需求逐渐增多,而所对应的资源更是海量. 一个人要从无数的选择中选中自己所感兴趣的无异于大海捞针. 本系统在实现个人信息 ...

  10. python微博文本分析_基于Python的微博情感分析系统设计

    基于 Python 的微博情感分析系统设计 王欣 ; 周文龙 [期刊名称] < <信息与电脑> > [年 ( 卷 ), 期] 2019(000)006 [摘要] 微博是当今公众 ...

最新文章

  1. 30 个 Redis 基础知识
  2. datagridview滚动条自动滚动_微软新贡献:进一步优化Chromium的滚动特性
  3. 第二章:用户登录管理模块
  4. java+txt+词语+次数_Java练习2--读取txt文件统计考勤次数并写入一个txt文件中
  5. 网络安全管理的“模拟人生”
  6. 默认空间和webapps下项目部署
  7. 海康威视Java SDK实战
  8. OpenDDS系列(1) —— OpenDDS 简介
  9. mysql批量执行语句_mysql批量执行sql语句
  10. 智慧工地、智慧建筑、项目GIS、工程信息化协同管理平台、BIM一体化项目管理平台、工程进度管理、计划进度、施工模拟、BIM视图、模型管理、质量管理、安全管理、施工管理、文档管理、建筑施工、工程展板
  11. WinAPI之ReleaseSemaphore
  12. 记录一些 arm64指令的用法
  13. 轻便简洁的电脑录音软件,免费收藏!
  14. Twitter教程:如何下载Twitter数据副本?
  15. Android软键盘使用
  16. 快速排序的枢轴(pivot)和边界
  17. 论文投稿指南——SCI选刊
  18. Python语句十大优雅写法
  19. 大数据工资这么高,零基础可以学习吗?
  20. css中伪类和伪元素有什么不一样

热门文章

  1. 百度地图开放平台web api 获取上海市所有小区信息
  2. 互动大屏,unity透明视频的实现方法:
  3. 输入法相关的测试用例整理
  4. 常见的文件后缀名大全
  5. 模型汇总-14 多任务学习-Multitask Learning概述
  6. C语言(动态开辟二维数组 指针数组、数组指针、一维数组模拟开辟)
  7. linux tar命令将压缩包解压到指定位置,用tar命令把目标压缩包解压到指定位置
  8. 软件测试面试题(2020.6.29)
  9. 分支定界法求解整数规划
  10. MongoDB下载安装教程(Windows)