心电图心跳信号分类 赛题理解

标签: 数据竞赛 Datawhale 发布于:2021-03-16 10:18:48 编辑于:2021-03-19 01:33:32 浏览量:1234

概述

赛题理解及 baseline 学习 2 天。

  • 理解赛题数据和目标,清楚评分体系。
  • 完成赛题报名和数据下载,理解赛题的解题思路。
  • 学习 baseline 方案,并成功运行提交结果。

Task 1 文档

代码仓库地址(结束后将开源)

Baseline 学习

  1. 首先使用 pandas 导入训练数据和测试数据。
  2. 之后进行数据预处理:
    1. 将心电信号数据展开分割为独立的列。
    2. 做了一个减少内存占用的操作:判断值的大小,为其选择刚好可以装下的数据类型。
  3. 准备训练数据:
    1. 将所给的训练数据集拆分为 x_train (丢弃 id 和 label 列,仅心电信号列) 和 y_train(仅标签列);
    2. 将说给的测试集数据丢弃掉 id 列。
  4. 使用 5 折交叉验证:kf = KFold(n_splits=folds, shuffle=True, random_state=seed)
  5. 使用了 lightgbm 作为分类器。
  6. 为 lightgbm 构建数据集:
train_matrix = clf.Dataset(trn_x, label=trn_y)
valid_matrix = clf.Dataset(val_x, label=val_y)
  1. 训练:model = clf.train(...)
  2. 预测:
val_pred = model.predict(val_x, num_iteration=model.best_iteration)
test_pred = model.predict(test_x, num_iteration=model.best_iteration) 
  1. 计算 loss:

    def abs_sum(y_pre,y_tru):
        y_pre = np.array(y_pre)
        y_tru = np.array(y_tru)
        loss = sum(sum(abs(y_pre-y_tru)))
        return loss
    
    val_y = np.array(val_y).reshape(-1, 1)
    val_y = onehot_encoder.fit_transform(val_y)
    score = abs_sum(val_y, val_pred)
    

提交的结果

我纠正了一个 bug,改了几个参数: 2 JustSong 497.452021-03-16

未经允许,禁止转载,本文源站链接:https://iamazing.cn/