Aprender los conceptos clave

1

Todo lo que aprenderás sobre MA con Scikit-Learn

2

¿Cómo aprenden las máquinas?

3

Problemas que podemos resolver con Scikit-learn

4

Las matemáticas que vamos a necesitar

Iniciar un proyecto con sklearn

5

Configuración de nuestro entorno Python

6

Instalación de librerías en Python

7

Datasets que usaremos en el curso

Optimización de features

8

¿Cómo afectan nuestros features a los modelos de Machine Learning?

9

Introducción al PCA

10

Preparación de datos para PCA e IPCA

11

Implementación del algoritmo PCA e IPCA

12

Kernels y KPCA

13

¿Qué es la regularización y cómo aplicarla?

14

Implementación de Lasso y Ridge

15

Explicación resultado de la implementación

16

ElasticNet: Una técnica intermedia

Regresiones robustas

17

El problema de los valores atípicos

18

Regresiones Robustas en Scikit-learn

19

Preparación de datos para la regresión robusta

20

Implementación regresión robusta

Métodos de ensamble aplicados a clasificación

21

¿Qué son los métodos de ensamble?

22

Preparación de datos para implementar métodos de ensamble

23

Implementación de Bagging

24

Implementación de Boosting

Clustering

25

Estrategias de Clustering

26

Implementación de Batch K-Means

27

Implementación de Mean-Shift

Optimización paramétrica

28

Validación de nuestro modelo usando Cross Validation

29

Implementación de K-Folds Cross Validation

30

Optimización paramétrica

31

Implementación de Randomized

32

Bonus: Auto Machine Learning

Salida a producción

33

Revisión de nuestra arquitectura de código

34

Importar y exportar modelos con Sklearn

35

Creación de una API con Flask para el modelo

36

Cierre del curso

37

Material adicional para consultar

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
21 Hrs
39 Min
45 Seg

Importar y exportar modelos con Sklearn

34/37
Recursos

Aportes 20

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Nota:
grid_reg.best_score_ regresa el promedio del score por defecto del mejor estimador.

Hasta ahora, este ha sido el mejor curso desde el punto de vista de metodología.

Codigo actualizado.

main

import pandas as pd
import numpy as np
import sklearn
from utils import Utils
from models import Models

if __name__ == "__main__":

    utils = Utils()
    models = Models()

    data = utils.load_from_csv('./in/felicidad.csv')
    X, y = utils.features_target(data, ['score','rank', 'country'],['score'])

    models.grid_training(X,y)

    print(data)



Utils

import pandas as pd
import numpy as np
import sklearn
import joblib

class Utils:

    def load_from_csv(self, path):
        return pd.read_csv(path)

    def load_from_mysql(self):
        pass

    def features_target(self, dataset, drop_cols, y):
        X = dataset.drop(drop_cols, axis=1)
        y = dataset[y]
        return X,y

    def model_export(self, clf, score):
        print(score)
        joblib.dump(clf, './models/best_model.pkl')


Models

import pandas as pd
import numpy as np
import sklearn
from sklearn.svm import SVR
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import GridSearchCV

from utils import Utils

class Models:

    def __init__(self):
        self.reg = {
            'SVR' : SVR(),
            'GRADIENT' : GradientBoostingRegressor()
        }

        self.params = {
           'SVR' : {
               'kernel' : ['linear', 'poly', 'rbf'],
               'gamma' : ['auto', 'scale'],
               'C' : [1,5,10]
           }, 'GRADIENT' : {
               'loss' : ['squared_error', 'absolute_error'],
               'learning_rate' : [0.01, 0.05, 0.1]
           }
        }

    def grid_training(self, X,y):

        best_score = 999
        best_model = None

        for name, reg in self.reg.items():

            grid_reg = GridSearchCV(reg, self.params[name], cv=3).fit(X, y.values.ravel())
            score = np.abs(grid_reg.best_score_)

            if score < best_score:
                best_score = score
                best_model = grid_reg.best_estimator_


        utils = Utils()
        utils.model_export(best_model, best_score)


Muy buenas la distribución de los archivos, clases y demás 😃

Con que así luce el código para producción!!!

Excelente clase, estoy muy motivado para hacer mis propios modelos!

Estas 2 ultimas clases me han ayudado muchisimo ya que siempre tenia esa duda si me la tenia que vivir con puros script en Python con todas sus librearias, pero el crear un Framework con modelos, ordenaod y organizado te da un manetra de trabajar mas productivamente

¿Por qué se toma el valor absoluto del score en la línea 37? ¿Y por qué se considera que el mejor score es el más bajo? Estaba leyendo la documentación, y se supone que todos los scores siguen la convención de que entre mayor es, mejor. En este caso, creo que la métrica es R^2, que sí sigue esa regla.
https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter

Uno de los mejores cursos. Muy completo

Nunca habia tan aniamado hacer mis propios modelos, voy a empezar cada vez hacer cada vez más

Sí les sale un error, tienen que cambiar en la carpeta models(punto)py en la función de GRADIENT cambiar los parámetros de la función de perdida -loss- de la siguiente manera:

'loss' : ['squared_error', 'huber'],

Acá les dejo mi implementación pero en vez de usar algoritmos para regresión use para clasificación

import pandas as pd
import numpy as np

from sklearn.svm import SVC
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV

from utils import Utils

class Models:

    def __init__(self):
        self.reg = {
            'SVC' : SVC(),
            'GRADIENT' : GradientBoostingClassifier()
        }

        self.params = {
           'SVC' : {
               'kernel' : ['linear', 'poly', 'rbf'],
               'gamma' : ['auto', 'scale'],
               'C' : [1,5,10]
           }, 'GRADIENT' : {
               'loss' : ['deviance', 'exponential'],
               'learning_rate' : [0.01, 0.05, 0.1]
           }
        }

    def grid_training(self, X,y):

        best_score = 999
        best_model = None

        for name, reg in self.reg.items():

            grid_reg = GridSearchCV(reg, self.params[name], cv=3).fit(X, y.values.ravel())
            score = np.abs(grid_reg.best_score_)

            if score < best_score:
                best_score = score
                best_model = grid_reg.best_estimator_
        

        utils = Utils()
        utils.model_export(best_model, best_score)

Línea para agregar el score al nombre del modelo que exportamos

joblib.dump(clf, './models/best_model_'+str(round(score,3))+'.pkl') 

Como se hace todo esto en Jupyter o Colab?
En Jupyter puse todo dentro de una carpeta, pero no reconoce a utils.

Excelente clase!!!

Para que no les pase cómo a mí les paso el **JSON** de los diccionarios que tienen que tener ahora y no se les rompa el código: ```python self.reg = { 'SVR': SVR(), # Instanciar SVR 'GRADIENT': GradientBoostingRegressor() # Instanciar GradientBoostingRegressor } self.params = { 'SVR': { 'kernel': ['linear', 'poly', 'rbf'], 'gamma': ['auto', 'scale'], 'C': [1, 5, 10] }, 'GRADIENT': { 'loss': ['squared_error', 'absolute_error', 'huber', 'quantile'], 'learning_rate': [0.01, 0.05, 0.1] } } ```     
Aquí está el código optimizado con comentarios añadidos para explicar la funcionalidad de cada sección: **main.py:** ```js pythonCopy code import pandas as pd from utils import Utils from models import Models if __name__ == "__main__": # Inicializar instancias de Utils y Models utils = Utils() models = Models() # Cargar datos desde el archivo CSV data = utils.load_from_csv('./in/felicidad.csv') # Separar características y etiquetas del dataset X, y = utils.features_target(data, ['score', 'rank', 'country'], ['score']) # Entrenar modelos y realizar búsqueda en cuadrícula models.grid_training(X, y) # Imprimir el dataset print(data) ```**utils.py:** ```js pythonCopy code import pandas as pd import joblib class Utils: # Método para cargar datos desde un archivo CSV def load_from_csv(self, path): return pd.read_csv(path) # Método para seleccionar características y etiquetas del dataset def features_target(self, dataset, drop_cols, y): X = dataset.drop(drop_cols, axis=1) y = dataset[y] return X, y # Método para exportar el mejor modelo entrenado def model_export(self, clf, score): print(score) joblib.dump(clf, './models/best_model.pkl') ```**models.py:** ```js pythonCopy code import numpy as np from sklearn.svm import SVR from sklearn.ensemble import GradientBoostingRegressor from sklearn.model_selection import GridSearchCV from utils import Utils class Models: def __init__(self): # Inicializar modelos y parámetros para la búsqueda en cuadrícula self.reg = { 'SVR': SVR(), 'GRADIENT': GradientBoostingRegressor() } self.params = { 'SVR': { 'kernel': ['linear', 'poly', 'rbf'], 'gamma': ['auto', 'scale'], 'C': [1, 5, 10] }, 'GRADIENT': { 'loss': ['squared_error', 'absolute_error'], 'learning_rate': [0.01, 0.05, 0.1] } } # Método para entrenar modelos y realizar búsqueda en cuadrícula def grid_training(self, X, y): best_score = float('inf') best_model = None for name, reg in self.reg.items(): grid_reg = GridSearchCV(reg, self.params[name], cv=3).fit(X, y.values.ravel()) score = np.abs(grid_reg.best_score_) if score < best_score: best_score = score best_model = grid_reg.best_estimator_ # Exportar el mejor modelo utils = Utils() utils.model_export(best_model, best_score ```

Importar y exportar modelos con Scikit-Learn es una tarea esencial cuando trabajas en proyectos de aprendizaje automático. Esto te permite guardar tus modelos entrenados y reutilizarlos en el futuro sin tener que volver a entrenarlos desde cero. Scikit-Learn proporciona herramientas para facilitar la importación y exportación de modelos.

Excelente curso !

Genial esta clase, como articuló todo lo aprendido y la aplicación de la modularidad con la implementación de clases!!Si no entendieron bien la metodología recomiendo ver:
Curso de Poo de Platzi