目录
赛制官方链接
赛题简介
赛制说明
长期赛(2021年7月~)
正式赛(3月12日 - 5月12日)
大赛组织
赛题背景
赛题数据
评测标准
结果提交
代码实现
零基础入门数据挖掘-心跳信号分类预测_学习赛_天池大赛-阿里云天池
本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事 —— 心跳信号分类预测。
赛题以心电图心跳信号数据为背景,要求选手根据心电图感应数据预测心跳信号所属类别,其中心跳信号对应正常病例以及受不同心律不齐和心肌梗塞影响的病例,这是一个多分类的问题。通过这道赛题来引导大家了解医疗大数据的应用,帮助竞赛新人进行自我练习、自我提高。
为了更好的引导大家入门,还特别为本赛题定制了学习方案,其中包括数据科学库、通用流程和baseline方案学习三部分。通过对本方案的完整学习,可以帮助掌握数据竞赛基本技能。(也可以进行视频直播学习)
新人赛的目的主要是为了更好地带动处于初学者阶段的新同学们一起玩起来,因此,我们鼓励所有选手,基于赛题发表notebook分享,内容包含但不限于对赛题的理解、数据分析及可视化、算法模型的分析以及一些核心的思路等内容。
本次赛事分为两个阶段,分别为正式赛及长期赛。
长期赛(2021年7月~)
自7月开始,本场比赛将长期开放,报名和参赛无时间限制。
新人赛的目的主要是为了更好地带动处于初学者阶段的新同学们一起玩起来,因此,我们鼓励所有选手,基于赛题发表notebook分享,内容包含但不限于对赛题的理解、数据分析及可视化、算法模型的分析以及一些核心的思路等内容。
社区会根据分享内容的数量以及程度,给予丰富的专属天池奖品以及粮票奖励。分享后您也可以通过下方钉钉群主动联系我们的社区运营同学,获取相关奖励。
正式赛(3月12日 - 5月12日)
报名成功后,参赛队伍通过天池平台下载数据,本地调试算法,在线提交结果。若参赛队伍在一天内多次提交结果,新结果版本将覆盖旧版本。
第一阶段(3月15日-5月11日)3月15日16:00提供评测,每天提供2次评测机会,提交后将进行实时评测;排行榜每小时更新,按照评测指标得分从高到低排序;(排行榜将选择选手在本阶段的历史最优成绩进行排名展示,不做最终排名计算)。
请在5月11日12:00点之前完成实名认证(实名认证入口:天池网站-个人中心-认证-支付宝实名认证)
5月11日12:00第一阶段提交截止,未产出成绩队伍或未按要求完成实名认证队伍,将被取消第二阶段的参赛资格。第二阶段(5月12日19:00-22:00)系统将在5月12日19:00提供测试数据,参赛队伍需要再次下载数据文件,本阶段提供2次评测机会,提交截止时间5月12日22:00,赛程期间系统实时评测、整点排名。排行榜将选择参赛队伍在本阶段的历史最优成绩进行排名展示。
正式赛结束后,以榜单成绩作为比赛算法提交成绩依照,TOP15团队提交代码审核,规范详见“代码规范”文档(所提交的代码能够在天池实验室(PAI-DSW探索者版)环境下复现最优成绩),代码提交截止时间5月17日12:00,代码请提交至邮箱[email protected],邮箱名称命名:队伍名称_比赛名次。组委会将审核并剔除靠人工标注而没有算法贡献或无法通过天池实验室复现最优成绩的队伍,获奖空缺名额后补。
关于Datawhale:Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结。
本次竞赛baseline,专题知识将陆续通过天池notebook分享,详情可关注Datawhale:
赛题以医疗数据挖掘为背景,要求选手使用提供的心跳信号传感器数据训练模型并完成不同心跳信号的分类的任务。为了更好的引导大家入门,还特别为本赛题定制了学习方案,其中包括数据科学库、通用流程和baseline方案学习三部分。
通过对本方案的完整学习,可以帮助掌握数据竞赛基本技能。同时我们也将提供专属的视频直播学习通道。
赛题以预测心电图心跳信号类别为任务,数据集报名后可见并可下载,该数据来自某平台心电图数据记录,总数据量超过20万,主要为1列心跳信号序列数据,其中每个样本的信号序列采样频次一致,长度相等。为了保证比赛的公平性,将会从中抽取10万条作为训练集,2万条作为测试集A,2万条作为测试集B,同时会对心跳信号类别(label)信息进行脱敏。
字段表
Field Description id 为心跳信号分配的唯一标识 heartbeat_signals 心跳信号序列 label 心跳信号类别(0、1、2、3)
选手需提交4种不同心跳信号预测的概率,选手提交结果与实际心跳类型结果进行对比,求预测的概率与真实值差值的绝对值(越小越好)。
具体计算公式如下:
针对某一个信号,若真实值为[�1,�2,�3,�4][y1,y2,y3,y4],模型预测概率值为[�1,�2,�3,�4][a1,a2,a3,a4],那么该模型的平均指标���−���abs−sum为
���−���=∑�=1�∑�=14∣��−��∣abs−sum=j=1∑ni=1∑4∣yi−ai∣
例如,心跳信号为1,会通过编码转成[0,1,0,0][0,1,0,0],预测不同心跳信号概率为[0.1,0.7,0.1,0.1][0.1,0.7,0.1,0.1],那么这个预测结果的���−���abs−sum为
���−���=∣0.1−0∣+∣0.7−1∣+∣0.1−0∣+∣0.1−0∣=0.6abs−sum=∣0.1−0∣+∣0.7−1∣+∣0.1−0∣+∣0.1−0∣=0.6
提交前请确保预测结果的格式与
sample_submit.csv
中的格式一致,以及提交文件后缀名为csv。形式如下:
id,label_0,label_1,label_2,label_3 100000,0,0,0,0 100001,0,0,0,0 100002,0,0,0,0 100003,0,0,0,0
数据的话可以在比赛官网获得,以下提供思路代码实现,使用Jupyter notbook工具
import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字符集
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
from matplotlib.font_manager import FontProperties
font_set = FontProperties(fname="typeface.ttf", size=12) #设置字体
train_data = pd.read_csv('D:/Bigdata/Anaconda/A_file/train.csv')
train_data
train_data.shape
train_data.head()
train_data.tail()
train_data.describe()
train_data.info()
train_data.isnull().sum() # 统计缺失值
train_data.dropna()
#异常数据处理
train_data[train_data['label']>3] = np.nan
train_data
train_data.dropna()
#预测分布
train_data['label']
train_data['label'].value_counts()
#数据可视化
y = train_data['label']
plt.figure(figsize = (15, 8),dpi = 100)
plt.hist(y)
plt.title('心跳信号类别分布条形统计图')
plt.show()
x = train_data['label'].value_counts()
labels = set(train_data["label"])
autopct = '%2.2f%%'
plt.figure(figsize = (15, 8),dpi = 100)
patches,l_text,p_text = plt.pie(x = x,labels = labels,autopct = autopct)
plt.title("心跳信号类别分布扇形统计图")
plt.show()