iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0
AI & Data

AI世界初探系列 第 24

Day 24:AI世界的初探(Kaggle 實作 - Part 2)

  • 分享至 

  • xImage
  •  

要分析資料, 就要先了解資料的成份, 這個資料庫是從PhysioNet來的, 是MIT與醫院合作錄的ECG心電圖資料, 其中Apnea指的就是呼吸睡眠中止症, 當新陳代謝症後群的病人睡眠時, 呼吸中止會造成ECG心率有明顯的變化, 於是MIT就 與醫院合作錄製ECG心率, 並由醫生來標示哪些地方是呼吸中止的地方。

MIT每年都會出一個醫學題目開放給所有人挑戰,鼓勵學習電腦科學的人才能將分析醫學數據,進而了解疾病的發生原因, 而這個資料庫就是2000年時出的題目, 詳細說明可以參考這篇文章:
The Apnea-ECG Database

官方連結

那資料下載下來後裡面有幾個副檔名:
a01.dat 資料檔
a01.hea 表頭檔
a01.qrs ECG的QRS波標示點
a01.apn 呼吸中止的標示點

要解析這些檔案, 就要使用wfdb的工具, 本來是以C語言來開發, 近年來由於python的流行, 也發展出幾個python的module:

pip install wfdb
pip install pywfdb (python 2.7)
pip install pyECG

那要分析a01這個訊號, 就要先看 a01.hea
a01 1 100 2957000
a01.dat 16 200 12 0 -12 5827 0 ECG

上面代表什麼意思呢?就是a01這個訊號只有1組, 以100Hz的取樣率取得, 總共錄了2957000個samples也就是29570秒,約8.2個小時, 而a01.dat資料檔以format 16的格式編碼 200 ADC units per millivolt, ADC(訊號振幅)為12-bit的解析度,checksum為5827, 基準點為0的ECG訊號。

依照上面的表頭檔資訊, 鍵入相對應的function:

import wfdb
import numpy as np

record = wfdb.rdrecord(record_name='a01', sampfrom=0, sampto=1000,channels=None, physical=True, pb_dir=None, m2s=True, smooth_frames=True, ignore_skew=False, return_res=16, force_channels=True, channel_names=None, warn_empty=False)

wfdb.plot_wfdb(record, title='Record a01 from Physionet Kaggle Apnea ECG') 
display(record.__dict__)

即可得到a01資料裡10秒的ECG資料, 如下圖:

https://ithelp.ithome.com.tw/upload/images/20190926/20118900mYwoq2yEY8.png

這篇有點難, 看不懂可以跳過!


上一篇
Day 23:AI世界的初探(Kaggle 實作)
下一篇
Day 25:AI世界的初探(Kaggle 實作 - Part3)
系列文
AI世界初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言