Automatización de Modelos Machine Learning con Python
Clase 34 de 37 • Curso Profesional de Machine Learning con scikit-learn
Contenido del curso
- 8

Selección de Variables en Modelos de Aprendizaje Automático
06:56 - 9

Reducción de Dimensionalidad con Análisis de Componentes Principales
05:52 - 10

Reducción de Dimensionalidad y Regresión Logística con Python
09:57 - 11

Clasificación de Enfermedad Cardiaca con PCA y Regresión Logística
13:45 - 12

Funciones Kernel en la Clasificación de Datos Complejos
09:01 - 13

Regularización en Modelos de Machine Learning
07:39 - 14

Implementación de Regularización en Modelos de Regresión Lineal
15:19 - 15

Análisis de Resultados en Modelos de Regresión Ridge y Lasso
02:42 - 16
Regularización ElasticNet con Scikit-learn: Conceptos y Aplicación
01:41
- 28

Validación Cruzada en Modelos de Machine Learning
06:53 - 29

Validación Cruzada con Scikit-learn: Cruz Vales Cor y KFold
09:09 - 30

Optimización de Modelos con Búsqueda en Grilla y Aleatoria
07:22 - 31

Automatización de Parámetros en Modelos de Regresión con Random Forest
10:38 - 32
Optimización Automática de Modelos con Auto-sklearn
01:50
- 33

Estructuración Modular de Código Python para Machine Learning
10:17 - 34

Automatización de Modelos Machine Learning con Python
14:18 - 35

Publicación de Modelos de IA con Flask y Python
10:36 - 36

Optimización de Modelos de Machine Learning para Producción
00:42 - 37
Recursos para Aprender Machine Learning y Data Science
00:58
¿Cómo extender nuestra arquitectura de código sin dañar la lógica existente?
Construir una arquitectura de código robusta y flexible es esencial para el desarrollo de soluciones efectivas en ciencia de datos y aprendizaje automático. El objetivo es poder extender el sistema fácilmente sin comprometer el código existente. Vamos a explorar cómo podemos lograrlo, comenzando con una implementación cuidadosa de las librerías necesarias y un análisis detallado del código.
Preparación y carga de librerías
Para comenzar, debemos importar las librerías esenciales para nuestro desarrollo. En Python, es importante recordar que una vez cargada una librería, no es necesario volver a cargarla en memoria, evitando así desbordar innecesariamente la misma.
import pandas as pd
import numpy as np
from sklearn.svm import SVR
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import GridSearchCV
- Pandas: Es fundamental para la manipulación de datos.
- NumPy: Proporciona funciones matemáticas avanzadas.
- Scikit-learn: Ofrece herramientas para modelos de aprendizaje automático, como SVR y GradientBoostingRegressor.
Definición de la clase principal
La implementación de una clase principal nos permite estructurar mejor nuestro código. Esta clase emplea un constructor para la inicialización de variables y configuraciones necesarias.
class Models:
def __init__(self):
self.regressors = {
'SVR': SVR(),
'GradientBoosting': GradientBoostingRegressor()
}
self.parametros = {
'SVR': {'kernel': ['linear', 'poly', 'rbf'], 'C': [1, 5, 10]},
'GradientBoosting': {'loss': ['ls', 'lad'], 'learning_rate': [0.01, 0.05, 0.1]}
}
Configuración de los modelos de aprendizaje automático
Definir un diccionario de diccionarios para los parámetros de cada modelo nos facilita realizar un ajuste hiperparámetro con GridSearchCV.
Implementación del ajuste de hiperparámetros
def grid_training(self, x, y):
best_score = float('inf')
best_model = None
for name, regressor in self.regressors.items():
param_grid = self.parametros[name]
grid_search = GridSearchCV(regressor, param_grid, cv=3)
grid_search.fit(x, y)
score = np.abs(grid_search.best_score_)
if score < best_score:
best_score = score
best_model = grid_search.best_estimator_
return best_model, best_score
Exportación del modelo
Una vez identificado el mejor modelo, es crucial exportarlo para su uso futuro. Implementamos una función en nuestras utilidades para lograr esto.
Código para la exportación
def export_model(model, score):
import joblib
joblib.dump(model, f'models/best_model_{score}.pkl')
Integración con el archivo principal
Finalmente, conectamos nuestra lógica definida en modelos con nuestro archivo principal, asegurando la ejecución y generación correcta de modelos.
from models import Models
if __name__ == "__main__":
model_instance = Models()
x, y = obtain_features_and_target() # Función ficticia para obtener datos.
best_model, best_score = model_instance.grid_training(x, y)
export_model(best_model, best_score)
Con esta arquitectura, hemos asegurado un flujo continuo y eficiente desde la carga de librerías hasta la exportación de modelos. La capacidad de identificar y utilizar el mejor modelo posible para una solución específica es un paso crucial en proyectos de ciencia de datos. Esta práctica no solo optimiza recursos, sino que también garantiza precisiones mayores en las predicciones.