penguins-species-classifier — DecisionTreeClassifier

Modelo de clasificación multiclase para identificar especies de pingüinos (Adelie, Gentoo, Chinstrap) a partir de mediciones físicas observables en el campo.

Información del modelo

  • Estimador: DecisionTreeClassifier (scikit-learn)
  • Autor: gusdelact
  • Fecha de entrenamiento: 2026-05-18T14:31:31.534278
  • Formato: joblib
  • Profundidad del árbol: 5
  • Hojas: 10

Uso previsto

  • Tarea: clasificación multiclase de especies de pingüinos.
  • Variable target: Species (3 clases: Adelie Penguin (Pygoscelis adeliae), Chinstrap penguin (Pygoscelis antarctica), Gentoo penguin (Pygoscelis papua)).
  • Caso de uso: identificación rápida de especies por biólogos de campo, sin necesidad de equipo de laboratorio.

Datos de entrenamiento

Hiperparámetros

{
  "criterion": "gini",
  "max_depth": 5,
  "min_samples_leaf": 1,
  "min_samples_split": 5
}

Búsqueda con GridSearchCV(cv=StratifiedKFold(5, shuffle=True, random_state=42), scoring="f1_weighted") sobre el grid:

{
  "max_depth": [
    3,
    4,
    5,
    6,
    8,
    10,
    null
  ],
  "min_samples_split": [
    2,
    5,
    10
  ],
  "min_samples_leaf": [
    1,
    2,
    5
  ],
  "criterion": [
    "gini",
    "entropy"
  ]
}
  • CV F1 weighted (mejor combinación): 0.9730 ± 0.0197
  • Tiempo de entrenamiento: 4.20s

Métricas en test (n=86)

Métrica Valor
accuracy 0.9884
f1_weighted 0.9883
f1_macro 0.9856
precision_weighted 0.9887
recall_weighted 0.9884

Por clase

Clase Precision Recall F1 Support
Adelie Penguin (Pygoscelis adeliae) 0.974 1.000 0.987 38
Chinstrap penguin (Pygoscelis antarctica) 1.000 0.941 0.970 17
Gentoo penguin (Pygoscelis papua) 1.000 1.000 1.000 31

Cómo usar

import joblib
import pandas as pd
from huggingface_hub import hf_hub_download

REPO = "gusdelact/penguins-decision-tree"
model = joblib.load(hf_hub_download(REPO, "model.joblib"))
preprocessor = joblib.load(hf_hub_download(REPO, "preprocessor.joblib"))
label_encoder = joblib.load(hf_hub_download(REPO, "label_encoder.joblib"))

# Datos de un individuo (mediciones de campo)
sample = pd.DataFrame([{
    "Culmen Length (mm)": 50.0,
    "Culmen Depth (mm)": 16.3,
    "Flipper Length (mm)": 220.0,
    "Body Mass (g)": 5700.0,
    "Island": "Biscoe",
    "Sex": "MALE",
    "Clutch Completion": "Yes",
}])

X = preprocessor.transform(sample)
pred = model.predict(X)
print(label_encoder.inverse_transform(pred))  # -> ['Gentoo penguin (Pygoscelis papua)']

Fundamento teórico (resumen de los documentos de diseño)

Diseño documentado en notes/01_design_fe.md, notes/02_design_modeling.md, notes/03_design_validation.md. Decisiones clave:

  • Sin StandardScaler ni IQR clipping porque los Decision Trees usan splits univariados invariantes a escala [ISLP §8.1; ESL §9.2].
  • One-Hot encoding porque scikit-learn no soporta splits nativos sobre categóricas y trata one-hot como features separadas [ISLP §8 Tree-Based Methods].
  • class_weight="balanced" para compensar el desbalance leve (Chinstrap ≈ 20%) operando dentro del criterio de Gini [ESL §9.2 Multiclass loss].
  • GridSearchCV exhaustivo con criterion ∈ {gini, entropy} porque ambos son numéricamente similares pero no idénticos en presencia de desbalance [ISLP §8.1; ESL §9.2.4].
  • F1 weighted como métrica primaria por ponderar por soporte de clase [FES §3.2.2].
  • Permutation importance + Gini importance porque la primera es más confiable cuando hay features categóricas codificadas one-hot [ESL §15.3.2].

Limitaciones

  • Dataset pequeño (344 individuos, 258 train). Reentrenar con datos nuevos si el caso de uso cambia de localización geográfica.
  • Solo distingue Adelie / Gentoo / Chinstrap; no tiene fallback para otras especies.
  • Las mediciones de isótopos del dataset original NO se usan; el modelo se diseñó explícitamente para identificación en el campo sin laboratorio.
  • Inestabilidad inherente del Decision Tree [ESL §9.2.4]: pequeñas variaciones en los datos pueden alterar la estructura del árbol. Si la estabilidad es crítica, escalar a RandomForestClassifier.

Cita

@model{penguins-decision-tree,
  author = {gusdelact},
  title = {penguins-species-classifier — DecisionTreeClassifier},
  year = {2026},
  publisher = {Hugging Face},
  url = {https://huggingface.co/gusdelact/penguins-decision-tree}
}
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train gusdelact/penguins-decision-tree

Spaces using gusdelact/penguins-decision-tree 3