今天,我深入研究了我的烏拉戒指的睡眠評分數據,提出了一個關鍵問題:這個問題是否需要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中文網其他相關文章!