行业大数据实行陈诉 通过聚类算法实现睡眠康健群体的精准智能划分 ...

打印 上一主题 下一主题

主题 1763|帖子 1763|积分 5289

一、实行目的

本实行旨在通过聚类算法对睡眠康健群体举行多维特征分析,辨认差别群体的睡眠模式,并根据群体特点订定个性化的睡眠改善方案。通过利用聚类算法,帮助理解差别群体的睡眠康健状态,为个性化康健管理提供支持。

二、实行情况



  • 编程语言:Python 3.11
  • 开辟工具:Jupyter Notebook
  • 利用的库

    • Pandas:用于数据处置惩罚和分析
    • Scikit-learn:用于呆板学习和聚类分析
    • Matplotlib:用于结果可视化
    • NumPy:用于数学运算和数据处置惩罚


三、实行数据

实行数据来自可穿着设备记录的睡眠康健指标,包含以下特征:


  • Heart_Rate_Variability:心率变异性
  • Body_Temperature:体温
  • Movement_During_Sleep:睡眠时的运动量
  • Sleep_Duration_Hours:睡眠时长
  • Sleep_Quality_Score:睡眠质量评分
  • Caffeine_Intake_mg:咖啡因摄入量
  • Stress_Level:压力程度
  • Bedtime_Consistency:入睡时间同等性
  • Light_Exposure_hours:光照袒露时间
数据已上传并包含多个康健指标,实用于举行聚类分析。


 
四、实行步骤


  • 数据加载和预处置惩罚

    • 加载数据并举行数据查抄。
    • 对数据举行标准化处置惩罚,使得各特征的量纲同等,克制某些特征的影响过大。

  • 聚类算法选择

    • 利用K-means聚类算法举行群体划分。
    • 利用肘部法选择最佳的簇数(K)。

  • 聚类模子练习

    • 对标准化后的数据举行聚类分析,确定群体的划分。
    • 盘算聚类的惯性(Inertia)来评估模子。

  • 分析与结果展示

    • 展示每个簇的中央和每个数据点的分类结果。
    • 基于聚类结果分析每个簇的特点,并订定个性化的睡眠改善方案。

  • 性能评估

    • 利用聚类的性能指标(如表面系数等)对聚类结果举行评估。

   肘部法(Elbow Method)是一种常用的确定聚类数(簇数)的启发式方法,尤其是在 K-means 聚类中。它的核心思想是通过观察差别簇数下模子的体现来选择最佳的簇数。
  
代码展示
  1. import pandas as pd
  2. import numpy as np
  3. from sklearn.preprocessing import StandardScaler
  4. from sklearn.cluster import KMeans
  5. import matplotlib.pyplot as plt
  6. # 数据加载
  7. file_path = 'wearable_tech_sleep_quality.csv' #替换为自己的数据
  8. data = pd.read_csv(file_path)
  9. # 数据标准化
  10. features = data[['Heart_Rate_Variability', 'Body_Temperature', 'Movement_During_Sleep',
  11.                  'Sleep_Duration_Hours', 'Sleep_Quality_Score', 'Caffeine_Intake_mg',
  12.                  'Stress_Level', 'Bedtime_Consistency', 'Light_Exposure_hours']]
  13. scaler = StandardScaler()
  14. scaled_features = scaler.fit_transform(features)
  15. # 使用肘部法选择最佳簇数
  16. inertia = []
  17. for k in range(1, 11):
  18.     kmeans = KMeans(n_clusters=k, random_state=42)
  19.     kmeans.fit(scaled_features)
  20.     inertia.append(kmeans.inertia_)
  21. #从1到10(即簇数从1到10)训练不同簇数的 K-means 模型,计算每个模型的惯性,并将惯性值保存到 inertia 列表中。
  22. #之后,通过绘制惯性值与簇数之间的关系图,我们可以观察惯性下降的趋势,并选择合适的簇数。
  23. # 绘制肘部法图形
  24. #肘部法的核心是找到图形中的拐点。通常情况下,随着簇数的增加,惯性值会逐渐下降,
  25. #但在某个点后,下降的幅度会显著减小,形成类似"肘部"的形状。此处即为最佳 K
  26. plt.plot(range(1, 11), inertia, marker='o')
  27. plt.title('Elbow Method for Optimal K')
  28. plt.xlabel('Number of Clusters (K)')
  29. plt.ylabel('Inertia')
  30. plt.show()
  31. # 根据图形选择3个簇进行聚类
  32. kmeans = KMeans(n_clusters=3, random_state=42)
  33. clusters = kmeans.fit_predict(scaled_features)
  34. data['Cluster'] = clusters
  35. # 映射簇编号到对应的睡眠质量群体
  36. cluster_mapping = {0: '低质量睡眠群体', 1: '中等睡眠质量群体', 2: '高质量睡眠群体'}
  37. # 将聚类标签替换为对应的群体名称
  38. data['Sleep_Quality_Group'] = data['Cluster'].map(cluster_mapping)
  39. # 将结果写入新的 CSV 文件
  40. output_file = 'new_sleep_quality_grouped.csv'
  41. data.to_csv(output_file, index=False)
  42. # 输出文件路径,方便用户下载
  43. print(f"更新后的数据已保存为: {output_file}")
复制代码
  kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(scaled_features)    
  的详细解释 

  
  1.kmeans = KMeans(n_clusters=3, random_state=42)
  

  • KMeans 是 scikit-learn 中用于实行 K-means 聚类算法的类。K-means 是一种无监视学习算法,它通过将数据点分配到 K 个簇中,使每个簇内部的点尽可能相似,而差别簇的点尽可能差别。

    • n_clusters=3

      • 这个参数指定了要将数据分成几个簇。这里的 3 表示将数据分成 3 个簇。选择簇数(K)通常是通过肘部法(Elbow Method)或其他方法来确定的。

    • random_state=42

      • random_state 用于设置随机数种子,使得每次运行代码时都能获得相同的结果。K-means 聚类算法在初始化簇中央时是随机的,因此指定 random_state 可以确保结果的可重复性。
      • 42 是任意选择的数值,它确保了代码运行时随机数生成器的初始化是同等的。


  2. clusters = kmeans.fit_predict(scaled_features)
  

  • kmeans.fit_predict(scaled_features)

    • fit:该方法用于练习 K-means 聚类模子,依据输入的特征数据 scaled_features 来实行聚类盘算。它通过不断调整簇中央来最小化每个簇内的偏差(惯性),直到收敛(即簇中央不再变化或变化极小)。
    • predict:该方法会利用练习好的模子来对每个数据点举行预测,即将每个数据点分配到它最接近的簇中央。
    • fit_predict 是 fit 和 predict 方法的归并方法,它不但实行练习过程,而且返回每个数据点的簇标签(即它所属的簇的编号)。

      • 比方,如果你有 1000 个样本,fit_predict 将返回一个长度为 1000 的数组,此中每个元素是样本所属簇的编号(比方 0, 1, 2)。

    • scaled_features 是标准化后的特征数据,包含了每个数据点的多个特征。这是输入到 K-means 模子中的数据,因为标准化后的数据有助于进步聚类算法的效果,克制因为特征的尺度差别而影响聚类结果。

  五、实行结果


  • 聚类练习过程: 通过肘部法,我们发现最恰当的簇数为 3。接着利用 K-means 聚类算法举行模子练习,得到以下聚类结果:

    • 簇 0:低质量睡眠群体
    • 簇 1:中等睡眠质量群体
    • 簇 2:高质量睡眠群体

  • 群体划分与分析: 聚类后的数据展示了每个群体的特征:

    • 簇 0(低质量睡眠群体):睡眠时长较短,压力程度较高,咖啡因摄入量较多,睡眠质量较低。
    • 簇 1(中等睡眠质量群体):睡眠时长适中,睡眠质量中等,咖啡因摄入量适中,压力程度适中。
    • 簇 2(高质量睡眠群体):睡眠时长较长,压力程度较低,咖啡因摄入量较低,睡眠质量较高。

  • 个性化睡眠改善方案

    • 簇 0:发起延长睡眠时长,淘汰咖啡因摄入,减轻压力,增加运动。
    • 簇 1:发起保持规律作息,优化睡眠情况,淘汰咖啡因摄入,举行适度运动。
    • 簇 2:发起维持现有习惯,继续保持低压力和康健的睡眠情况,增加白天光照袒露。

  • 聚类性能评估: 聚类模子的表面系数(Silhouette Score)为 0.45,说明聚类效果较好,但仍有提升空间。惯性值也在进一步优化过程中得到改善。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表