热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

温馨提示:文末有CSDN平台官方提供的学长QQ名片:)》源代码下载:基于python个人睡眠质量分析设计与实现【毕业设计】【Python】【数据可视化】

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



》源代码下载:基于python个人睡眠质量分析设计与实现【毕业设计】【Python】【数据可视化】【数据分析】【机器学习】【源代码】- CSDN下载


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',line" src="https://img2.php1.cn/3cdc5/3ce1/8fd/c4be57134c84a3b0.png" />​​​​​​​

         同理构建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、决策树、随机森林等算法实现对睡眠质量的预测建模。


 》源代码下载:基于python个人睡眠质量分析设计与实现【毕业设计】【Python】【数据可视化】【数据分析】【机器学习】【源代码】- CSDN下载


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

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

精彩专栏推荐订阅:

Python 毕设精品实战案例



推荐阅读
  • pythonMatplotlib(二)
    Matplotlib+pandas作图一、对csv文件进行提取ruixi.csv对上述表格进行提取并做图画出图像二、对.xlsx进行提取:rui ... [详细]
  • 前言:拿到一个案例,去分析:它该是做分类还是做回归,哪部分该做分类,哪部分该做回归,哪部分该做优化,它们的目标值分别是什么。再挑影响因素,哪些和分类有关的影响因素,哪些和回归有关的 ... [详细]
  • plt python 画直线_机器学习干货,一步一步通过Python实现梯度下降的学习
    GradientDescent-梯度下降梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 解决python matplotlib画水平直线的问题
    本文介绍了在使用python的matplotlib库画水平直线时可能遇到的问题,并提供了解决方法。通过导入numpy和matplotlib.pyplot模块,设置绘图对象的宽度和高度,以及使用plot函数绘制水平直线,可以解决该问题。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了Foundation框架中一些常用的结构体和类,包括表示范围作用的NSRange结构体的创建方式,处理几何图形的数据类型NSPoint和NSSize,以及由点和大小复合而成的矩形数据类型NSRect。同时还介绍了创建这些数据类型的方法,以及字符串类NSString的使用方法。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • MVC中的自定义控件
    怎么样创建自定义控 ... [详细]
  • 动量|收益率_基于MT策略的实战分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于MT策略的实战分析相关的知识,希望对你有一定的参考价值。基于MT策略的实战分析 ... [详细]
  • 数学建模入门python绘制频率直方图
    文章目录例题数据处理绘图操作调用演示例题数据处理将以下的数据保存到磁盘上17275169551696417165167471716216867165521696216865 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
mobiledu2502916503
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有