今天,我深入研究了我的乌拉戒指的睡眠评分数据,提出了一个关键问题:这个问题是否需要AI,还是简单的公式足以满足?
活动跟踪和URA环>
>我是数据驱动的健康爱好者,利用Fitbit和Garmin等健身追踪器。 但是,对于日常穿着,我更喜欢OURA戒指的谨慎设计。 睡眠跟踪是一个关键特征,这使得其睡眠评分值得调查。 (对于那些不熟悉的人,Oura的睡眠评分在他们的博客上详细介绍了。) 神秘的睡眠评分> OUA的缺点是它的有收入见解。与Fitbit和Garmin的综合仪表板不同,免费版本仅显示睡眠评分。 这就提出了一个问题:什么使这个睡眠评分如此特别,订阅值得吗?>
假设:简单相关
> 作为数据科学家,我最初的假设很简单:较高的深度睡眠持续时间和较低的平均心率与更好的睡眠评分相关。 可以这么简单吗?让我们找出。
数据采集和处理>我通过他们的开发人员API访问了我的outa数据,检索睡眠数据并将其保存为JSON文件。 然后将这些数据索引在Elasticsearch中,以易于查询。 JSON结构简化了此过程,不需要额外的映射或数据清洁。
>实验:简单查询<code class="language-python">def get_data(type): url = 'https://api.ouraring.com/v2/usercollection/' + type params={ 'start_date': '2021-11-01', 'end_date': '2025-01-01' } headers = { 'Authorization': 'Bearer ' + auth_token } response = requests.request('GET', url, headers=headers, params=params) return response.json()["data"] data = get_data("sleep") with open('oura_data_sleep.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4)</code>
>
我的实验涉及简单的查询以检验我的假设。 我首先以最高的睡眠评分进行了分类:<code class="language-python">client = Elasticsearch( cloud_id=ELASTIC_CLOUD_ID, api_key=ELASTIC_API_KEY ) index_name = 'oura-history-sleep' # ... (Elasticsearch index creation and data loading code) ...</code>
>检查这些高分的日子表明,深度睡眠和心率的模式一致。 然后,我建立了一个超过1.5小时的弹性搜索查询过滤,以下时间超过1.5小时,在60 bpm以下的心率下,由REM睡眠排序:
<code class="language-python">response = client.search(index = index_name, sort="readiness.score:desc") # ... (Code to print day and sleep score) ...</code>
<code class="language-python">query = { "range" : { "deep_sleep_duration" : { "gte" : 1.5*3600 } }, "range" : { "average_heart_rate":{ "lte" : 60 } } } response = client.search(index = index_name, query=query, sort="rem_sleep_duration:desc")</code>
结果与初始高分天密切相关。 虽然不是完美的,但这表明了简单公式的预测能力。 进一步的基巴纳可视化(如下所示)加强了这种连接。
>
在AI周围的炒作中,
很容易忽略更简单的解决方案。 这种睡眠评分通常以复杂的AI成就呈现,本质上是基于直接的公式。这突出了理解何时更简单的方法足够的重要性 - 导致更准确,更具成本效益且易于解释的结果。 这强调了数据科学基本原理和直观建模的持久价值。 虽然先进的技术令人印象深刻,但了解何时不使用它同样至关重要。>
请参阅此处的完整代码笔记本。以上是分析我的OURA睡眠评分 - 是AI还是数学?的详细内容。更多信息请关注PHP中文网其他相关文章!