Inteligencia artificial / Material de consulta
Clasificación reproducible
scikit-learn · CPU
Consulte las explicaciones, el código y las salidas de referencia en esta página.
Volver al aula →Proyecto I · Clasificación reproducible
Overtone Education · Curso de inteligencia artificial
Objetivo
Comparar una línea base y un pipeline sobre iris. Practicar partición estratificada, preparación sin fuga, evaluación y límites. Fuente: sklearn.datasets.load_iris, conjunto de observaciones botánicas distribuido con scikit-learn. La división didáctica no demuestra validez fuera de ese dominio.
Preparación
Ejecute de arriba abajo en Jupyter con Python 3.12 (entorno validado). Entorno externo al aula. Instale en un entorno virtual:
python -m pip install numpy scikit-learn ipykernelLas versiones comprobadas se distribuyen en requirements-ia.txt. No necesita claves de API. Los ejemplos son educativos y no validan aplicaciones de impacto alto.
Pasos
1. Cargar y describir los datos
Registre las versiones y compruebe dimensiones antes de ajustar.
Código de referencia
import sys
import numpy as np
import sklearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.dummy import DummyClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
print({"python":sys.version.split()[0], "numpy":np.__version__, "sklearn":sklearn.__version__})
datos = load_iris()
X, y = datos.data, datos.target
print("Dimensiones:", X.shape, "Clases:", datos.target_names.tolist())Salida comprobada
{'python': '3.12.14', 'numpy': '2.5.4', 'sklearn': '1.9.1'}
Dimensiones: (150, 4) Clases: ['setosa', 'versicolor', 'virginica']
2. Reservar prueba y entrenar
La semilla es 7 y la prueba ocupa 25%. El escalador solo aprende con entrenamiento. No elija hiperparámetros mirando la prueba.
Código de referencia
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=7, stratify=y)
base = DummyClassifier(strategy="most_frequent").fit(X_train, y_train)
modelo = make_pipeline(StandardScaler(), LogisticRegression(max_iter=500))
modelo.fit(X_train, y_train)
pred = modelo.predict(X_test)
print({"exactitud_base":float(base.score(X_test,y_test)), "exactitud_pipeline":float(accuracy_score(y_test,pred))})Salida comprobada
{'exactitud_base': 0.3157894736842105, 'exactitud_pipeline': 0.9736842105263158}
3. Revisar errores
Las filas de la matriz son etiquetas reales y las columnas son predicciones. No confunda una evaluación de 38 observaciones con una garantía de generalización.
Código de referencia
print("Matriz de confusión (filas reales, columnas predichas):")
print(confusion_matrix(y_test,pred))
print(classification_report(y_test,pred,target_names=datos.target_names,zero_division=0))
print("Casos erróneos:", int(np.sum(pred!=y_test)))Salida comprobada
Matriz de confusión (filas reales, columnas predichas):
[[13 0 0]
[ 0 12 1]
[ 0 0 12]]
precision recall f1-score support
setosa 1.00 1.00 1.00 13
versicolor 1.00 0.92 0.96 13
virginica 0.92 1.00 0.96 12
accuracy 0.97 38
macro avg 0.97 0.97 0.97 38
weighted avg 0.98 0.97 0.97 38
Casos erróneos: 1
Comprobaciones
Verifique integridad, tamaño reservado y ausencia de ajuste del escalador con prueba. El umbral es una comprobación educativa amplia, no un criterio de lanzamiento.
Código de referencia
assert len(y_train)==112 and len(y_test)==38
assert modelo[0].n_samples_seen_==112
assert 0.8 <= accuracy_score(y_test,pred) <= 1
assert confusion_matrix(y_test,pred).sum()==38
print("Comprobaciones aprobadas")Salida comprobada
Comprobaciones aprobadas
Siguientes pasos
- Cree validación dentro de entrenamiento y compare dos modelos antes de abrir una prueba nueva.
- Repita el procedimiento con varias semillas e informe variabilidad.
- Escriba una ficha con procedencia, uso previsto y exclusiones.
- Explique por qué un coeficiente no demuestra un efecto causal.
Referencia: https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html