Machine Learning en Python: De Cero a Producción

12 min
Por Álvaro Efren Bolaños
Machine Learning en Python: De Cero a Producción

Machine Learning en Python: Tu Guía Completa

El Machine Learning ha revolucionado la forma en que procesamos y analizamos datos. En esta guía completa, te llevaremos desde los conceptos básicos hasta la implementación en producción.

🎯 ¿Qué es Machine Learning?

Machine Learning es una rama de la inteligencia artificial que permite a las computadoras aprender y tomar decisiones basadas en datos, sin ser programadas explícitamente para cada tarea específica.

Tipos de ML

  1. Aprendizaje Supervisado

    • Clasificación
    • Regresión
  2. Aprendizaje No Supervisado

    • Clustering
    • Reducción de dimensionalidad
  3. Aprendizaje por Refuerzo

    • Sistemas de recompensa
    • Optimización de decisiones

🛠️ Herramientas Esenciales

Librerías Fundamentales

python
1# Manipulación de datos
2import pandas as pd
3import numpy as np
4
5# Visualización
6import matplotlib.pyplot as plt
7import seaborn as sns
8
9# Machine Learning
10from sklearn.model_selection import train_test_split
11from sklearn.ensemble import RandomForestClassifier
12from sklearn.metrics import accuracy_score, classification_report
13
14# Deep Learning
15import tensorflow as tf
16from tensorflow import keras

Configuración del Entorno

bash
1# Instalar dependencias
2pip install pandas numpy scikit-learn matplotlib seaborn jupyter
3
4# Para deep learning
5pip install tensorflow torch
6
7# Para visualización avanzada
8pip install plotly dash

📊 Proceso de ML: Paso a Paso

1. Exploración de Datos

python
1# Cargar y explorar datos
2df = pd.read_csv('datos.csv')
3
4# Información básica
5print(df.info())
6print(df.describe())
7
8# Valores nulos
9print(df.isnull().sum())
10
11# Visualización
12sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
13plt.show()

2. Preprocesamiento

python
1from sklearn.preprocessing import StandardScaler, LabelEncoder
2
3# Escalado de características
4scaler = StandardScaler()
5X_scaled = scaler.fit_transform(X)
6
7# Codificación de variables categóricas
8le = LabelEncoder()
9y_encoded = le.fit_transform(y)
10
11# División train/test
12X_train, X_test, y_train, y_test = train_test_split(
13    X_scaled, y_encoded, test_size=0.2, random_state=42
14)

3. Entrenamiento del Modelo

python
1# Crear y entrenar modelo
2model = RandomForestClassifier(n_estimators=100, random_state=42)
3model.fit(X_train, y_train)
4
5# Predicciones
6y_pred = model.predict(X_test)
7
8# Evaluación
9accuracy = accuracy_score(y_test, y_pred)
10print(f'Precisión: {accuracy:.2f}')
11print(classification_report(y_test, y_pred))

🚀 Casos de Uso Reales

1. Análisis de Sentimientos

python
1from textblob import TextBlob
2
3def analyze_sentiment(text):
4    blob = TextBlob(text)
5    return blob.sentiment.polarity
6
7# Aplicar a reviews de productos
8df['sentiment'] = df['review'].apply(analyze_sentiment)

2. Predicción de Ventas

python
1from sklearn.linear_model import LinearRegression
2
3# Features: precio, temporada, promociones
4X = df[['price', 'season', 'promotion']]
5y = df['sales']
6
7# Modelo de regresión
8reg_model = LinearRegression()
9reg_model.fit(X_train, y_train)
10
11# Predicción
12sales_pred = reg_model.predict(X_test)

3. Detección de Anomalías

python
1from sklearn.ensemble import IsolationForest
2
3# Modelo para detectar transacciones fraudulentas
4iso_forest = IsolationForest(contamination=0.1)
5anomalies = iso_forest.fit_predict(transaction_data)

🎛️ Optimización de Modelos

Hyperparameter Tuning

python
1from sklearn.model_selection import GridSearchCV
2
3# Definir parámetros a probar
4param_grid = {
5    'n_estimators': [50, 100, 200],
6    'max_depth': [10, 20, None],
7    'min_samples_split': [2, 5, 10]
8}
9
10# Grid Search
11grid_search = GridSearchCV(
12    RandomForestClassifier(), 
13    param_grid, 
14    cv=5,
15    scoring='accuracy'
16)
17
18grid_search.fit(X_train, y_train)
19best_model = grid_search.best_estimator_

Validación Cruzada

python
1from sklearn.model_selection import cross_val_score
2
3# Validación cruzada
4scores = cross_val_score(model, X, y, cv=5)
5print(f'Precisión promedio: {scores.mean():.2f} (+/- {scores.std() * 2:.2f})')

🌐 Puesta en Producción

1. Serialización del Modelo

python
1import joblib
2
3# Guardar modelo
4joblib.dump(model, 'modelo_entrenado.pkl')
5
6# Cargar modelo
7loaded_model = joblib.load('modelo_entrenado.pkl')

2. API con Flask

python
1from flask import Flask, request, jsonify
2import joblib
3
4app = Flask(__name__)
5model = joblib.load('modelo_entrenado.pkl')
6
7@app.route('/predict', methods=['POST'])
8def predict():
9    data = request.json
10    prediction = model.predict([data['features']])
11    return jsonify({'prediction': prediction.tolist()})
12
13if __name__ == '__main__':
14    app.run(debug=True)

3. Monitoreo y Mantenimiento

python
1# Métricas de monitoreo
2from sklearn.metrics import mean_squared_error
3import logging
4
5def monitor_model_performance(y_true, y_pred):
6    mse = mean_squared_error(y_true, y_pred)
7    
8    if mse > threshold:
9        logging.warning(f'Model performance degraded: MSE = {mse}')
10        # Trigger retraining
11        retrain_model()

📈 Mejores Prácticas

1. Versionado de Datos y Modelos

  • Usar DVC para versionado de datos
  • MLflow para tracking de experimentos
  • Git para código

2. Testing de ML

python
1import pytest
2
3def test_model_accuracy():
4    accuracy = model.score(X_test, y_test)
5    assert accuracy > 0.8, f"Model accuracy {accuracy} is below threshold"
6
7def test_prediction_shape():
8    prediction = model.predict(X_test[:1])
9    assert len(prediction) == 1, "Prediction shape is incorrect"

3. Documentación y Reproducibilidad

python
1# requirements.txt
2pandas==1.3.0
3scikit-learn==1.0.0
4numpy==1.21.0
5
6# config.yaml
7model:
8  type: "RandomForest"
9  parameters:
10    n_estimators: 100
11    max_depth: 20

🔮 Tendencias Futuras

AutoML

  • Automatización del pipeline completo
  • Selección automática de algoritmos
  • Hyperparameter tuning automático

MLOps

  • CI/CD para modelos de ML
  • Monitoreo en tiempo real
  • A/B testing para modelos

Edge ML

  • Modelos optimizados para dispositivos móviles
  • Inferencia en tiempo real
  • Privacidad de datos mejorada

¿Estás listo para implementar ML en tu próximo proyecto? ¡El futuro de los datos te espera!