基于python个人睡眠质量分析设计与实现
温馨提示:文末有 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个人睡眠质量分析设计与实现相关推荐
- python网络爬虫的流程图_基于Python的网络爬虫的设计与实现
龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...
- python信息采集管理系统_基于Python的求职信息采集分析系统设计与实现
基于 Python 的求职信息采集分析系统设计与实现 关鑫洁 ; 黄思奇 ; 位磊 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2020(000)003 [摘要] 为了便于求职 ...
- java课程教学质量分析_基于jsp的教学质量分析辅助决策学员评估系统-JavaEE实现教学质量分析辅助决策学员评估系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的教学质量分析辅助决策学员评估系统, 该项目可用各类java课程设计大作业中, 教学质量分析辅助决策学员评估系统的系 ...
- 可视化平台python_基于Python的可视化数据分析平台设计与实现
Computer Era No. 12 2017 0 引言 随着云计算.物联网.社交网络等的兴起和数据库技术的成熟,社会中的各类数据正在以前所未有的速度增长.传统的数据处理方式难以发掘出海量数据中所隐 ...
- python如何读dat数据_如何用Python进行数据质量分析
概述 数据挖掘的第一步工作是数据准备,而数据准备的第一步就是数据质量分析了.本篇文章着重介绍如何使用Python进行数据质量分析的初步工作,属于比较基础的入门教程. 为什么要进行数据质量分析 根据百度 ...
- python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx
湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...
- 基于python可视化的网页搜索引擎设计#毕业设计
开发环境 项目编号:基于python可视化的网页搜索引擎设计#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5 ...
- python微博评论情感分析_基于Python的微博情感分析系统设计
2019 年第 6 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Python 的微博情感分析系统设计 王 欣 周文龙 (武汉工程大学邮电 ...
- 基于Python的图书推荐系统的设计与实现
基于Python的图书推荐系统的设计与实现 课题描述 在这个数据爆炸的年代,人们的需求逐渐增多,而所对应的资源更是海量. 一个人要从无数的选择中选中自己所感兴趣的无异于大海捞针. 本系统在实现个人信息 ...
- python微博文本分析_基于Python的微博情感分析系统设计
基于 Python 的微博情感分析系统设计 王欣 ; 周文龙 [期刊名称] < <信息与电脑> > [年 ( 卷 ), 期] 2019(000)006 [摘要] 微博是当今公众 ...
最新文章
- 30 个 Redis 基础知识
- datagridview滚动条自动滚动_微软新贡献:进一步优化Chromium的滚动特性
- 第二章:用户登录管理模块
- java+txt+词语+次数_Java练习2--读取txt文件统计考勤次数并写入一个txt文件中
- 网络安全管理的“模拟人生”
- 默认空间和webapps下项目部署
- 海康威视Java SDK实战
- OpenDDS系列(1) —— OpenDDS 简介
- mysql批量执行语句_mysql批量执行sql语句
- 智慧工地、智慧建筑、项目GIS、工程信息化协同管理平台、BIM一体化项目管理平台、工程进度管理、计划进度、施工模拟、BIM视图、模型管理、质量管理、安全管理、施工管理、文档管理、建筑施工、工程展板
- WinAPI之ReleaseSemaphore
- 记录一些 arm64指令的用法
- 轻便简洁的电脑录音软件,免费收藏!
- Twitter教程:如何下载Twitter数据副本?
- Android软键盘使用
- 快速排序的枢轴(pivot)和边界
- 论文投稿指南——SCI选刊
- Python语句十大优雅写法
- 大数据工资这么高,零基础可以学习吗?
- css中伪类和伪元素有什么不一样