心电图心跳信号分类 赛题理解
概述
赛题理解及 baseline 学习 2 天。
- 理解赛题数据和目标,清楚评分体系。
- 完成赛题报名和数据下载,理解赛题的解题思路。
- 学习 baseline 方案,并成功运行提交结果。
Baseline 学习
- 首先使用 pandas 导入训练数据和测试数据。
- 之后进行数据预处理:
- 将心电信号数据展开分割为独立的列。
- 做了一个减少内存占用的操作:判断值的大小,为其选择刚好可以装下的数据类型。
- 准备训练数据:
- 将所给的训练数据集拆分为 x_train (丢弃 id 和 label 列,仅心电信号列) 和 y_train(仅标签列);
- 将说给的测试集数据丢弃掉 id 列。
- 使用 5 折交叉验证:
kf = KFold(n_splits=folds, shuffle=True, random_state=seed)
。 - 使用了 lightgbm 作为分类器。
- 为 lightgbm 构建数据集:
train_matrix = clf.Dataset(trn_x, label=trn_y)
valid_matrix = clf.Dataset(val_x, label=val_y)
- 训练:
model = clf.train(...)
- 预测:
val_pred = model.predict(val_x, num_iteration=model.best_iteration)
test_pred = model.predict(test_x, num_iteration=model.best_iteration)
计算 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,改了几个参数:
Links: heartbeat-classification-1