我的网站–> http://www.yansongsong.cnpython
项目github地址:https://github.com/xiaosongshine/preliminary_challenge_baseline_kerasgit
为响应国家健康中国战略,推送健康医疗和大数据的融合发展的政策,由清华大学临床医学院和数据科学研究院,天津市武清区京津高村科技创新园,以及多家重点医院联合主办的首届中国心电智能大赛正式启动。自今日起至2019年3月31日24时,大赛开启全球招募,预计大赛总奖金将高达百万元!目前官方报名网站已上线,欢迎高校、医院、创业团队等有志于中国心电人工智能发展的人员踊跃参加。github
首届中国心电智能大赛官方报名网站>>http://mdi.ids.tsinghua.edu.cn算法
下载完整的训练集和测试集,共1000例常规心电图,其中训练集中包含600例,测试集中共400例。该数据是从多个公开数据集中获取。参赛团队须要利用有正常/异常两类标签的训练集数据设计和实现算法,并在没有标签的测试集上作出预测。编程
该心电数据的采样率为500 Hz。为了方便参赛团队用不一样编程语言都能读取数据,全部心电数据的存储格式为MAT格式。该文件中存储了12个导联的电压信号。训练数据对应的标签存储在txt文件中,其中0表明正常,1表明异常。bash
简单分析一下,初赛的数据集共有1000个样本,其中训练集中包含600例,测试集中共400例。其中训练集中包含600例是具备label的,能够用于咱们训练模型;测试集中共400例没有标签,须要咱们使用训练好的模型进行预测。网络
赛题就是一个二分类预测问题,解题思路应该包括如下内容app
通过对赛题的分析,咱们把任务分红四个小任务,首先第一步是:dom
该心电数据的采样率为500 Hz。为了方便参赛团队用不一样编程语言都能读取数据,全部心电数据的存储格式为MAT格式。该文件中存储了12个导联的电压信号。训练数据对应的标签存储在txt文件中,其中0表明正常,1表明异常。编程语言
咱们由上述描述能够得知,
数据处理函数定义:
读取一条数据进行显示
咱们由上述信息能够看出每种导联都是由5000个点组成的列表,12种导联方式使每一个样本都是12*5000的矩阵,相似于一张分辨率为12x5000的照片。
咱们须要处理的就是把每一个读取出来,归一化一下,送入网络进行训练能够了。
标签处理方式
我这里是采用从reference.txt读取,而后打乱保存到reference.csv中,注意必定要进行数据打乱操做,否则训练效果不好。由于原始数据前面便签所有是1,后面所有是0
数据迭代方式
数据读取的方式我采用的是生成器的方式,这样能够按batch读取,加快训练速度,你们也能够采用一下所有读取,看我的的习惯了
数据咱们处理好了,后面就是模型的搭建了,我使用keras搭建的,操做简单便捷,tf,pytorch,sklearn你们能够按照本身喜爱来。
网络模型能够选择CNN,RNN,Attention结构,或者多模型的融合,抛砖引玉,此Baseline采用的一维CNN方式,一维CNN学习地址
模型搭建
用model.summary()输出的网络模型为
训练参数比较少,你们能够根据本身想法更改。
模型训练
训练过程输出(最优结果:loss: 0.0565 - acc: 0.9820 - val_loss: 0.8307 - val_acc: 0.8800)
预测数据
下面是前十条预测结果:
你们须要注意一下,我预测的方式和官方不一样,须要你们本身根据赛题要求来进行预测提交。。
此Baseline采用最简单的一维卷积达到了88%测试准确率(可能会由于随机初始化值上下波动),你们也能够多尝试GRU,Attention,和Resnet等结果,测试准确率准确率会突破90+。
能力有限,写的很差的地方欢迎你们批评指正。。
我的主页--> https://xiaosongshine.github.io/
项目github地址:https://github.com/xiaosongshine/preliminary_challenge_baseline_keras
欢迎Fork+Star,以为有用的话,麻烦小小鼓励一下 ><