Preparación y Simulación (Lección 4) - Evaluación, Optimización y Configuración del Entorno

1. Evaluación Avanzada del Rendimiento del Modelo

Objetivo: Aplicar técnicas avanzadas para evaluar el rendimiento del modelo y entender sus limitaciones.

Análisis de Error

Identificación y análisis de errores en las predicciones del modelo.


              from sklearn.metrics import confusion_matrix
              cm = confusion_matrix(y_test, predictions)
              print(cm)
                

Curvas de Aprendizaje

Uso de curvas de aprendizaje para evaluar el rendimiento del modelo a lo largo del tiempo.


              from sklearn.model_selection import learning_curve
              import matplotlib.pyplot as plt
              train_sizes, train_scores, test_scores = learning_curve(model, X, y, cv=5)
              plt.plot(train_sizes, train_scores.mean(axis=1), label='Train score')
              plt.plot(train_sizes, test_scores.mean(axis=1), label='Test score')
              plt.xlabel('Training examples')
              plt.ylabel('Score')
              plt.legend()
              plt.show()
                

Evaluación de Sensibilidad

Análisis de la sensibilidad del modelo a diferentes características y parámetros.


              import numpy as np
              def evaluate_sensitivity(model, X, y):
                  sensitivities = []
                  for feature in range(X.shape[1]):
                      X_temp = np.copy(X)
                      X_temp[:, feature] = np.random.permutation(X_temp[:, feature])
                      score = cross_val_score(model, X_temp, y, cv=5).mean()
                      sensitivities.append(score)
                  return sensitivities
              
              sensitivities = evaluate_sensitivity(model, X, y)
              print(sensitivities)
                

2. Optimización del Modelo

Objetivo: Implementar técnicas avanzadas para optimizar el rendimiento del modelo de machine learning.

Ajuste Fino del Modelo

Técnicas de ajuste fino para mejorar la precisión y eficiencia del modelo.


              from sklearn.model_selection import RandomizedSearchCV
              param_dist = {'C': [0.1, 1, 10], 'gamma': [1, 0.1, 0.01]}
              random_search = RandomizedSearchCV(SVC(), param_dist, cv=5, n_iter=10)
              random_search.fit(X_train, y_train)
              print(f'Best Parameters: {random_search.best_params_}')
              best_model = random_search.best_estimator_
              best_predictions = best_model.predict(X_test)
                

Ensemble Learning

Aplicación de técnicas de ensemble learning para mejorar el rendimiento del modelo.


              from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
              rf_model = RandomForestClassifier()
              gb_model = GradientBoostingClassifier()
              rf_model.fit(X_train, y_train)
              gb_model.fit(X_train, y_train)
              rf_predictions = rf_model.predict(X_test)
              gb_predictions = gb_model.predict(X_test)
              print(f'Random Forest Accuracy: {accuracy_score(y_test, rf_predictions)}')
              print(f'Gradient Boosting Accuracy: {accuracy_score(y_test, gb_predictions)}')
                

Regularización

Uso de técnicas de regularización para prevenir el sobreajuste y mejorar la generalización del modelo.


              from sklearn.linear_model import Ridge, Lasso
              ridge_model = Ridge(alpha=1.0)
              lasso_model = Lasso(alpha=0.1)
              ridge_model.fit(X_train, y_train)
              lasso_model.fit(X_train, y_train)
              ridge_predictions = ridge_model.predict(X_test)
              lasso_predictions = lasso_model.predict(X_test)
              print(f'Ridge Regression Accuracy: {ridge_model.score(X_test, y_test)}')
              print(f'Lasso Regression Accuracy: {lasso_model.score(X_test, y_test)}')
                

3. Configuración del Entorno para el Desarrollo de Modelos

Objetivos:

Instalación de Herramientas y Bibliotecas

Objetivo: Asegurar que todos los participantes tengan el entorno de desarrollo correctamente configurado.

Instalación de Python y Bibliotecas Esenciales

Instalación de Python (si no está ya instalado) y las bibliotecas necesarias.


              pip install scikit-learn pandas numpy matplotlib seaborn
                

Configuración del Entorno de Desarrollo

Verificación de la Configuración

Objetivo: Verificar que todas las instalaciones y configuraciones estén funcionando correctamente.

Prueba de Instalación de scikit-learn

Importar y utilizar scikit-learn en un pequeño script de prueba.


              import sklearn
              print(sklearn.__version__)
                

Configuración de un Notebook de Jupyter

Crear y ejecutar un notebook de Jupyter para probar la configuración.


              import pandas as pd
              import numpy as np
              # Crear un pequeño DataFrame de prueba
              df = pd.DataFrame({
                  'feature1': np.random.rand(10),
                  'feature2': np.random.rand(10),
                  'target': np.random.randint(0, 2, size=10)
              })
              print(df.head())