Hari ini, saya menyelidiki data skor tidur Oura Ring saya, yang mendorong soalan penting: Adakah masalah ini memerlukan AI, atau akan menjadi formula mudah?
Penjejakan aktiviti dan cincin kami
Saya seorang peminat kesihatan yang didorong data, menggunakan pelacak kecergasan seperti Fitbit dan Garmin. Walau bagaimanapun, untuk memakai sehari -hari, saya lebih suka cincin kami untuk reka bentuknya yang bijak. Penjejakan tidur adalah ciri utama, menjadikan skor tidurnya patut disiasat. (Bagi mereka yang tidak dikenali, skor tidur Oura terperinci di blog mereka.)
skor tidur enigmatic
Kelemahan Oura adalah pandangannya. Versi percuma hanya memaparkan skor tidur, tidak seperti papan pemuka Fitbit dan Garmin yang komprehensif. Ini menimbulkan persoalan: Apa yang menjadikan skor tidur ini begitu istimewa, dan adakah langganan itu berbaloi?
Hipotesis: korelasi mudah
Hipotesis awal saya, sebagai saintis data, adalah mudah: tempoh tidur yang lebih tinggi dan kadar jantung purata yang lebih rendah berkait rapat dengan skor tidur yang lebih baik. Mungkinkah itu mudah? Mari kita ketahui.Pengambilalihan data dan pemprosesan
Saya mengakses data OUSA saya melalui API pemaju mereka, mengambil data tidur dan menyimpannya sebagai fail JSON.
Data ini kemudian diindeks dalam Elasticsearch untuk memudahkan pertanyaan. Struktur JSON memudahkan proses ini, tidak memerlukan pemetaan tambahan atau pembersihan data.
<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>
Eksperimen saya melibatkan pertanyaan mudah untuk menguji hipotesis saya. Saya mula -mula menyusun hari dengan skor tidur tertinggi:
<code class="language-python">response = client.search(index = index_name, sort="readiness.score:desc") # ... (Code to print day and sleep score) ...</code>
Memeriksa hari-hari pencapaian tinggi ini menunjukkan corak yang konsisten dalam tidur dan denyutan jantung. Kemudian, saya membina penapisan pertanyaan Elasticsearch untuk tidur dalam lebih dari 1.5 jam dan kadar denyutan jantung di bawah 60 bpm, disusun dengan tidur REM:
<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>
Hasilnya sangat berkorelasi dengan hari-hari skor tinggi awal. Walaupun tidak sempurna, ini menunjukkan kuasa ramalan formula mudah. Visualisasi Kibana selanjutnya (ditunjukkan di bawah) mengukuhkan sambungan ini.
Kepentingan
Dalam gembar -gembur sekitar AI, mudah untuk mengabaikan penyelesaian yang lebih mudah. Skor tidur ini, sering disampaikan sebagai pencapaian AI yang kompleks, pada dasarnya berdasarkan formula mudah. Ini menekankan pentingnya pemahaman apabila kaedah yang lebih mudah mencukupi-yang membawa kepada hasil yang lebih tepat, kos efektif, dan mudah ditafsirkan. Ini menggariskan nilai fundamental sains data dan pemodelan intuitif. Walaupun teknologi canggih mengagumkan, mengetahui bila tidak menggunakannya sama pentingnya.
lihat buku nota kod penuh di sini.
Atas ialah kandungan terperinci Menganalisis Skor Tidur Oura saya - Adakah AI atau hanya matematik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!