¿Por qué Scikit-Learn?#

Scikit-Learn trae herramientas modernas de aprendizaje automático a la quimiometría, haciendo que los flujos de trabajo sean más flexibles, escalables y fáciles de prototipar y validar.

  • Flexibilidad: Funciona con varios modelos quimiométricos y métodos de preprocesamiento.

  • Integración: Se puede combinar con herramientas específicas del dominio para análisis espectral, estadística multivariante y diseño experimental.

  • Escalabilidad: Puede manejar pequeños conjuntos de datos de laboratorio así como datos industriales a gran escala.

  • Experimentación fácil: Prototipado rápido con diferentes algoritmos y técnicas de preprocesamiento.

¿Qué es Scikit-Learn?#

Scikit-learn (sklearn) es una biblioteca de aprendizaje automático de código abierto construida sobre NumPy y SciPy. Ofrece una API unificada para varias técnicas de aprendizaje automático, incluyendo:

  • Aprendizaje supervisado: Regresión, clasificación y métodos de conjunto

  • Aprendizaje no supervisado: Agrupamiento y reducción de dimensionalidad

  • Preprocesamiento de datos: Escalado de características, codificación y transformación

  • Evaluación de modelos: Validación cruzada, métricas y ajuste de hiperparámetros

scikit-learn es ampliamente utilizado en investigación e industria debido a su simplicidad, eficiencia y extensa documentación.

Una Amplia Caja de Herramientas de Modelos y Métodos#

Una de las mayores fortalezas de scikit-learn es su amplia selección de modelos y herramientas. Algunas categorías clave incluyen:

Regresión#

  • Regresión Lineal (LinearRegression): Un modelo simple pero efectivo para variables objetivo continuas.

  • Mínimos Cuadrados Parciales (PLSRegression): Un método poderoso frecuentemente usado en quimiometría.

  • Regresión de Vectores de Soporte (SVR): Efectivo para relaciones no lineales.

Clasificación#

  • Regresión Logística (LogisticRegression): Para clasificación binaria y multiclase.

  • Bosque Aleatorio (RandomForestClassifier): Un método de conjunto robusto para mejor precisión.

  • Máquinas de Vectores de Soporte (SVC): Efectivo para fronteras de decisión complejas.

Reducción de Dimensionalidad#

  • Análisis de Componentes Principales (PCA): Extrae las características más importantes de tu conjunto de datos.

  • Factorización de Matrices No Negativas (NMF): Útil para descomposición de señales.

  • t-SNE (TSNE): Ayuda a visualizar datos complejos de alta dimensionalidad.

Herramientas de Preprocesamiento#

  • Escalado de Características (StandardScaler, MinMaxScaler): Esencial para modelos que dependen de métricas de distancia.

  • Codificación de Datos Categóricos (OneHotEncoder, LabelEncoder): Transforma variables categóricas a formato numérico.

  • Selección de Características (SelectKBest, RFE): Ayuda a elegir las variables más relevantes.

El flujo de trabajo de scikit-learn#

Scikit-learn sigue un proceso intuitivo de tres pasos descrito en la figura a continuación:

Flujo de trabajo de scikit-learn
  1. Definir: Configurar los parámetros del modelo/preprocesamiento.

  2. Ajustar: El modelo aprende patrones de los datos de entrenamiento usando fit()

  3. Aplicar: El modelo ajustado procesa nuevos datos usando:

  • transform() para pasos de preprocesamiento y aprendizaje no supervisado

  • predict() para modelos de aprendizaje supervisado (clasificación y regresión)

Veamos dos ejemplos, uno para preprocesamiento y otro para un modelo de regresión. Primero, importa los módulos requeridos:

from sklearn.preprocessing import StandardScaler
from sklearn.cross_decomposition import PLSRegression

Preprocesamiento con StandardScaler:

# 1. Define the preprocessor
scaler = StandardScaler(with_mean=True, with_std=False)

# 2. Fit the preprocessor to the data
scaler.fit(X)

# 3. Apply the processor to the data
X_scaled = scaler.transform(X)

# ... or to new new data
X_new_scaled = scaler.transform(X_new)

Construyendo un modelo de PLSRegression:

# 1. Define the PLS model with two components
pls = PLSRegression(n_components=2)

# 2. Fit the PLS model to the training data
pls.fit(X_scaled, y)

# 3. Apply the PLS model to new data
y_pred = pls.predict(X_new_scaled)

Ecosistema Extendido#

Además de los paquetes principales de scikit-learn, el ecosistema incluye una amplia gama de bibliotecas complementarias de código abierto que extienden su funcionalidad:

  • skore: Optimiza y estructura el desarrollo e interpretación de modelos.

  • astartes: Técnicas algorítmicas para dividir datos en conjuntos de entrenamiento y prueba.

  • Imbalanced-learn: Técnicas para manejar conjuntos de datos desbalanceados.

  • skops: Herramientas para serializar y compartir modelos de aprendizaje automático.