Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Lane 2 · kotlin-core] Recall metric

Abierto
#1,228 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
55/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
kotlin

Línea de trabajo

First check the dependency on #1226, then read Accuracy.kt and ConfusionMatrixAccumulator. Implement Recall and its factory functions in Recall.kt, and add the listed cases in RecallTest.kt, following AccuracyTest.kt for tensor helpers. Run the specified API dump and JVM tests; done means the public API is included and all six cases pass.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

coding good first issue size:s skill:kotlin-core sub-issue training

Sub-issue of #1222 (Precision, Recall and F1Score metrics).

Lane: 2 · Kotlin core
Skill needed: Kotlin. Read Accuracy.kt and ConfusionMatrixAccumulator first — this task is mostly wiring.
Size: s (~2–3 h)
Blocked by: #1226 (accumulator + Averaging)

What to do

  1. Add public class Recall(averaging: Averaging = Averaging.MACRO, dim: Int = -1, threshold: Float? = null) : Metric
    in skainet-lang/skainet-lang-core/src/commonMain/kotlin/sk/ainet/lang/nn/metrics/Recall.kt:
    • override val name = "recall";
    • update(...) delegates to a private ConfusionMatrixAccumulator(dim, threshold);
    • compute() = reduce(acc.counts(), averaging) { tp, fp, fn -> if (tp + fn == 0L) 0.0 else tp.toDouble() / (tp + fn) };
    • reset() delegates.
      Mirror Accuracy.kt's KDoc style (what the metric means, the dim / threshold semantics, what averaging does).
  2. Add factory functions at the bottom of the file mirroring accuracy() / binaryAccuracy():
    public fun recall(averaging: Averaging = Averaging.MACRO, dim: Int = -1): Metric and
    public fun binaryRecall(threshold: Float = 0.5f): Metric.
  3. Tests in skainet-backends/skainet-backend-cpu/src/commonTest/kotlin/sk/ainet/exec/metrics/RecallTest.kt,
    copying AccuracyTest.kt's tensor helpers. Cover, with hand-computed expected values
    (see the parent issue and #1224 for the reference fixture pred [2,0,1,2], target [2,1,1,0]):
    • macro multi-class with Int32 index targets → 0.5;
    • micro multi-class → 0.5 (and assert it equals Accuracy on the same batch);
    • the same batch with soft (FP32 one-hot) targets gives the same result;
    • binary with threshold, 2-class logits;
    • accumulation across two update() calls equals one call on the concatenated batch;
    • zero-division: a class with TP+FP+FN = 0 contributes 0.0 (per #1224), and
      compute() on a fresh metric returns 0.0.
  4. ./gradlew :skainet-lang:skainet-lang-core:apiDump and
    ./gradlew :skainet-backends:skainet-backend-cpu:jvmTest --tests "sk.ainet.exec.metrics.*".

Acceptance

  • Recall + recall() + binaryRecall() public and in the API dump
  • All six test cases above pass on JVM
  • No duplicated argmax / iteration logic — everything goes through the accumulator
  • PR links this issue and #1222; PR body states "unit tests only; ground-truth wiring tracked in SKEEP-005 (#1223)"

Notes

Recall answers "of what was actually positive, how much did I catch". The twin task #1227 (Precision) is the same shape with tp / (tp + fp) — filed separately so two people can each ship one.

Lenguaje dominante
Kotlin
Estrellas
52
Forks
15
Merge medio
1 d 15 h
PR fusionados (30 d)
36

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de SKaiNET-developers/SKaiNET

Todos los issues de SKaiNET-developers/SKaiNET

Issues similares

Más issues de Kotlin

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.