# Ecg Cvd Classification Eval

> Evaluates machine learning models for detecting cardiovascular diseases and arrhythmias from ECG signals, comparing classification performance against computational complexity and energy efficiency. Use when the user wants to benchmark on CinC 2017, CinC 2020, or asks about evaluating this task. Reports F1 score.

- Skill: `qhjqhj00/ecg-cvd-classification-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/ecg-cvd-classification-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/ecg-cvd-classification-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/ecg-cvd-classification-eval

---


# ecg-cvd-classification-eval

> Machine learning-based detection of cardiovascular disease using ECG signals: performance vs. complexity — Pham et al. (arXiv:2303.11429, 2023)

## What this evaluates

Evaluates machine learning models for detecting cardiovascular diseases and arrhythmias from ECG signals, comparing classification performance against computational complexity and energy efficiency.

## Datasets

- **CinC 2017** — total ?; splits: test (-1)
- **CinC 2020** — total ?; splits: test (-1)

## Metrics

- `F1 score` **(primary)** — range: [0, 1]
  - Harmonic mean of precision and recall, typically macro-averaged across all arrhythmia classes.
- `Power consumption` — range: other
  - Total electrical energy consumed during the inference pipeline, measured in watt-hours.
- `CO2 emissions` — range: other
  - Equivalent carbon dioxide emissions generated by the energy consumption, calculated using the eco2AI library.
- `Inference time` — range: other
  - Total wall-clock time required for preprocessing and model prediction per signal.

## Input / output format

**Input**: Raw 1D ECG time-series signals, Poincaré recurrence plots, or hand-crafted time-series features (e.g., FFT coefficients, peak ratios).

**Output**: Discrete classification label indicating the cardiovascular condition (e.g., Normal, Atrial Fibrillation, Sinus Bradycardia, Sinus Tachycardia, Other).

## Scoring recipe

```python
def compute_f1(predictions, gold):
    tp = sum(1 for p, g in zip(predictions, gold) if p == g == 1)
    fp = sum(1 for p, g in zip(predictions, gold) if p == 1 and g == 0)
    fn = sum(1 for p, g in zip(predictions, gold) if p == 0 and g == 1)
    precision = tp / (tp + fp) if (tp + fp) > 0 else 0
    recall = tp / (tp + fn) if (tp + fn) > 0 else 0
    return 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0
# Power/CO2 measured via hardware profiling or eco2AI library.
# Inference time measured as total wall-clock ms per signal.
```

## Common pitfalls

- Heavy preprocessing steps for feature-based models (e.g., XGBoost) dominate total inference time, masking fast prediction speeds.
- Poincaré diagram methods rely heavily on heart rate variability, causing them to fail on arrhythmia types with stable heart rates.
- Long-term ECG recordings are underrepresented in the dataset, making per-source performance metrics potentially unstable.

## Evidence (verbatim from paper)

> The experiment results showed the superior performance of the 1D ResNet model learned over raw data in both datasets. Especially, in CinC 2020, this model surpassed the 1st rank solution by a large margin. The comparison of F1 scores and the efficiency metrics (power consumption, eq. CO2) are given in Table 3.

## Citation

```bibtex
@misc{pham2023ecgcvd,
  title={Machine learning-based detection of cardiovascular disease using ECG signals: performance vs. complexity},
  author={Pham et al.},
  year={2023},
  note={arXiv:2303.11429}
}
```

- arXiv: 2303.11429

