AIWIN 心电图智能诊断Baseline【线上0.719】

今天老肥和大家分享的是AIWIN的秋季赛-心电图智能诊断竞赛的任务一Baseline方案,线上与线下验证得分均为0.719,采用的是单模树模型。

赛题背景

心电图是临床最基础的一个检查项目,因为安全、便捷成为心脏病诊断的利器。每天都有大量的心电图诊断需求,但是全国范围内诊断心电图的专业医生数量不足,导致很多医院都面临专业心电图医生短缺的情况。

人工智能技术的出现,为改善医生人力资源不足的问题带来了全新的可能。由于心电图数据与诊断的标准化程度较高,相对较易于运用人工智能技术进行智能诊断算法的开发。

赛题任务与数据

本赛题任务一为要求针对心电图输出二元(正常 v.s 异常)分类标签,评价指标为F1,心电数据的单位为mV,采样率为 500HZ,记录时长为 10 秒,存储格式为 MAT;文件中存储了 12 导联的电压信号(包含了I,II,III,aVR,aVL,aVF,V1,V2,V3,V4,V5 和 V6)。

Baseline方案

每个样本心电图的数据的形状为(12,5000), 一个非常直观的思路便是将其进行分导联采样再将所有导联展平作为训练的原始数据避免特征维度过大。

def get_data(sep_length):
    """
    读取数据,提取部分数据用于训练预测
    """

    train_path = glob.glob('data/train/*.mat')
    test_path = glob.glob('data/val/*.mat')

    matrix = np.zeros((2000, 5000 * 12 // sep_length))

    i = 0
    for p in tqdm(train_path):
        ecgdata = sio.loadmat(p)['ecgdata']
        sep = ecgdata[:, ::sep_length]
        sep = sep.reshape(-1,)
        matrix[i, :] = sep
        i += 1
    for p in tqdm(test_path):
        ecgdata = sio.loadmat(p)['ecgdata']
        sep = ecgdata[:, ::sep_length]
        sep = sep.reshape(-1,)
        matrix[i, :] = sep
        i += 1  

    data = pd.DataFrame(matrix)
    data.columns = [f'{i}' for i in range(len(data.columns))]
    return data

对于该数据进行特征提取,主要包括不同导联内数据的均值、方差等统计,所有导联数据的均值、方差等统计,因为该数据为时序,考虑对数据做差分再求统计。

def feature_eng(data, f, feat):
    """
    统计特征
    """
    data[f'{f}_min'] = data[feat].min(1)
    data[f'{f}_max'] = data[feat].max(1)
    data[f'{f}_mean'] = data[feat].mean(1)
    data[f'{f}_std'] = data[feat].std(1)
    data[f'{f}_median'] = data[feat].median(1)
    data[f'{f}_skew'] = data[feat].skew(1)    
    return data

特征提取完后我们直接使用竞赛利器LightGBM进行五折交叉验证训练预测并生成提交文件即可。

除了上述内容,我们可以进一步对数据的时序特性进行挖掘,也可以尝试使用深度学习模型对本赛题任务进行建模。最后,按照惯例我已上传了完整Baseline代码,在后台回复「ECG」即可,祝大家比赛顺利,奖金多多!

——END——

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值