ScikitLearn: Evaluación
Introducción y entorno
El uso de Scikit Learn representa un enfoque práctico y modular para el desarrollo de proyectos de ciencia de datos. Para comenzar, es necesario contar con un entorno Python bien configurado que incluya librerías como NumPy, pandas y matplotlib. La instalación de scikit learn se ejecuta habitualmente con pip install scikit-learn
o, si se trabaja con Anaconda, mediante conda install scikit-learn
.
La documentación oficial de scikit learn proporciona referencias actualizadas, de modo que cada profesional pueda orientarse sobre cambios en las versiones y ejemplos de uso. Familiarizarse con las funcionalidades principales y con la estructura de módulos de scikit learn es la base para manejar con soltura cada apartado del proceso de ciencia de datos.
A lo largo de este recorrido, se cubren aspectos esenciales que, una vez superados, posibilitan la obtención de un certificado de superación en Ciencia de datos con Scikit Learn. Este logro, además, habilita al alumno para ejercer como científico de datos y trabajar con proyectos de inteligencia artificial basados en Python.
Preprocesamiento de datos
El preprocesamiento es la fase más delicada cuando se trabaja con datos reales, pues estos pueden presentarse incompletos, ruidosos o con escalas muy diferentes.
- Utilidades:
SimpleImputer
para rellenar valores faltantes,StandardScaler
yMinMaxScaler
para alinear escalas, yOneHotEncoder
para manejar variables categóricas. - Limpieza adicional: se eliminan o transforman outliers y se organizan columnas irrelevantes.
- Ingeniería de características: se agregan atributos derivados, interacciones polinómicas o transformaciones logarítmicas que mejoren el poder predictivo de los algoritmos.
Este proceso sitúa los datos en forma adecuada para entrenar los estimadores de scikit learn, facilitando la disminución del sobreajuste y el incremento de la estabilidad en las predicciones.
Regresión
Las técnicas de regresión sirven para predecir valores continuos. En scikit learn, se concentran en submódulos como sklearn.linear_model
y sklearn.ensemble
.
- Modelos lineales básicos:
LinearRegression
,Ridge
yLasso
. - Ensamblados de árboles:
RandomForestRegressor
oGradientBoostingRegressor
para capturar no linealidades. - Nuevas aproximaciones:
HistGradientBoostingRegressor
acelera los cálculos con datos voluminosos.
La forma genérica de entrenamiento y predicción es:
reg = LinearRegression()
reg.fit(X_train, y_train)
preds = reg.predict(X_test)
Los algoritmos de regresión permiten afrontar pronósticos de ventas, estimaciones de precios o modelar cualquier fenómeno cuantitativo.
Clasificación
La clasificación se enfoca en predecir etiquetas discretas como “spam” o “no spam”, o la categoría de un tipo de producto. Scikit Learn ofrece:
- Modelos lineales (
LogisticRegression
,SGDClassifier
), adecuados para problemas iniciales. - Árboles de decisión y bosques (
DecisionTreeClassifier
,RandomForestClassifier
) con gran versatilidad y capacidad de interpretabilidad. - SVM (
SVC
) para separar las clases mediante hiperplanos con posibilidad de kernels no lineales. - Máquinas basadas en proximidad (
KNeighborsClassifier
), convenientes en conjuntos pequeños y para prototipos rápidos.
Su interfaz de entrenamiento y predicción es coherente con la de regresión, compartiendo la noción de fit
, predict
y la evaluación mediante métricas de rendimiento.
Aprendizaje no supervisado
En el aprendizaje no supervisado, los algoritmos detectan patrones o estructuras en los datos sin etiquetas conocidas. Los submódulos correspondientes abarcan:
- Clustering (
KMeans
,DBSCAN
,AgglomerativeClustering
), donde se exploran grupos de instancias similares. - Reducción de dimensionalidad (
PCA
,TruncatedSVD
), útil para la visualización y la eliminación de redundancias. - Modelos de mezcla (
GaussianMixture
), que aplican un enfoque probabilístico para la agrupación de datos.
Al no disponer de un objetivo explícito, la evaluación se basa en métricas internas como la silueta y otros criterios de agrupamiento.
NLP
El procesamiento del lenguaje natural (NLP) con scikit learn se logra por medio de vectorizadores y algoritmos estándar de clasificación o regresión.
- Vectorización de texto:
CountVectorizer
yTfidfVectorizer
transforman frases en matrices dispersas. - Modelos:
LogisticRegression
,RandomForestClassifier
oSVC
para la clasificación de temas, sentimientos o etiquetado de documentos. - Preprocesamiento: se suelen eliminar stop words, convertir el texto a minúsculas y, en ocasiones, implementar filtros para caracteres especiales.
Tras la transformación del texto en vectores, el flujo de trabajo concuerda con el de cualquier problema supervisado de scikit learn.
Series temporales
Para usar scikit learn en series temporales, se construyen variables que representen el pasado y se aprovecha TimeSeriesSplit
para validar.
- Desplazamiento (lagging): Se crean columnas basadas en observaciones anteriores (p. ej. ( y_{t-1} ), ( y_{t-2} )).
- Modelos de regresión:
LinearRegression
,Ridge
,RandomForestRegressor
oGradientBoostingRegressor
se entrenan sobre X e y generados con lags adecuados. - Cuidados adicionales: respetar el orden temporal y la presencia de tendencias o estacionalidad, ajustando transformaciones específicas.
Esta aproximación integra la lógica de los modelos de scikit learn al ámbito secuencial propio de los datos cronológicos.
Validación de modelos
La validación es esencial para estimar el rendimiento de un modelo con datos no vistos. Los métodos más empleados son:
train_test_split
, particionando en entrenamiento y prueba.- Validación cruzada (
KFold
,StratifiedKFold
) para realizar múltiples particiones y reducir la varianza de la estimación. GridSearchCV
yRandomizedSearchCV
para la búsqueda de hiperparámetros, probando combinaciones de valores o distribuciones.TimeSeriesSplit
para preservar la cronología en problemas de series temporales.
Estas herramientas producen una estimación más confiable que un único análisis train/test.
Pipelines y despliegue
Los pipelines agrupan en un objeto los pasos de preprocesamiento y el modelo final, simplificando tanto la ejecución como el despliegue.
- Se definen transformadores en secuencia (
StandardScaler
,OneHotEncoder
, etc.) y se ubica un estimador como etapa final. - Cualquier búsqueda de hiperparámetros afecta a la cadena completa, mediante notaciones tipo
nombre_paso__hiperparametro
. - Para desplegar, se persiste el pipeline con
joblib.dump
y se carga conjoblib.load
, preservando transformaciones y predicciones en un mismo bloque de código.
Este esquema otorga coherencia y evita fugas de información, imprescindible para el entorno de producción.
Evaluación
En la evaluación del sistema, se revisan métricas específicas para cada tipo de problema:
- Clasificación:
accuracy_score
,f1_score
,precision_score
,recall_score
, matriz de confusión, AUC-ROC. - Regresión: error absoluto medio (MAE), error cuadrático medio (MSE), error porcentual absoluto medio (MAPE) o el coeficiente de determinación (R²).
- Clustering: puntuación de silueta o calinski_harabasz_score.
- Búsqueda de equilibrio entre métricas (por ejemplo, precisión vs. sensibilidad), según la importancia de reducir falsos positivos o negativos.
Así, se confirma la calidad del modelo y se asume el rendimiento previsto al aplicarlo en datos productivos.
Superar todos estos apartados otorga al alumno las bases para un certificado en Ciencia de datos con Scikit Learn, demostrando competencias para ejercer como científico de datos y colaborar en proyectos de inteligencia artificial.
Lecciones de este módulo de ScikitLearn
Lecciones de programación del módulo Evaluación del curso de ScikitLearn.
Ejercicios de programación en este módulo de ScikitLearn
Evalúa tus conocimientos en Evaluación con ejercicios de programación Evaluación de tipo Test, Puzzle, Código y Proyecto con VSCode.