¿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:
Definir: Configurar los parámetros del modelo/preprocesamiento.
Ajustar: El modelo aprende patrones de los datos de entrenamiento usando
fit()Aplicar: El modelo ajustado procesa nuevos datos usando:
transform()para pasos de preprocesamiento y aprendizaje no supervisadopredict()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.