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

Implementación de Randomized

31/37
Recursos

Aportes 18

Preguntas 4

Ordenar por:

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

o inicia sesión.

Impresionante! Esto ahorra mucho tiempo y con muy buena precisión.
Y sí, el profe se equivocó de número al final. En realidad era el siguiente de la izquierda.

Con respecto a la razón de eliminar el rank y el score, se hace porque generalmente lo que se quiere es que las features no tengan ninguna correlación entre ellas. Lo ideal es que exista correlación solo entre las features y la variable objetivo 😃

Hice algunas actualizaciones porque las funciones en la llave “criterion” están descontinuadas, así que el código queda de esta manera:

import pandas as pd

from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestRegressor

if __name__ == "__main__":

    dataset = pd.read_csv('./data/felicidad.csv')

    print(dataset)

    X = dataset.drop(['country', 'rank', 'score'], axis=1)
    y = dataset[['score']].squeeze()

    reg = RandomForestRegressor()

    parametros = {
        'n_estimators' : range(4,16),
        'criterion' : ['squared_error', 'absolute_error'],
        'max_depth' : range(2,11)
    }

    rand_est = RandomizedSearchCV(reg, parametros , n_iter=10, cv=3, scoring='neg_mean_absolute_error').fit(X,y)

    print(rand_est.best_estimator_)
    print(rand_est.best_params_)
    print(rand_est.predict(X.loc[[0]]))

Dos cosas que ha prendido al momento y que hubiera deseado aprender hace unos años.

  • Siempre testear, probar nuevas cosas y mas con esta forma, ya se me quitó la pereza.

  • Todos los modelos son malos, solo que se busca el mejor. así que con esto se quiere siempre buscar el mejor, Obvio siempre llevare este curso en mi corazón porque en verdad he aprendido tanto

En realidad el score del primer pais no es el señalado en el video, ya que si se presta atencion al conteo de columnas y valores, se viendo el valor de high
Para saber el score en ese punto simplemente podemos imprimir el valor de y en esa misma posicion

y_hat = randomized.predict(x.loc[[0]])

print('Predict: {:.4}'.format(y_hat[0]))
print('Real:    {:.4}'.format(y[0]))
Predict: 7.507
Real:    7.537

Cambiaron ‘mse’ y ‘mae’ respectivamente

    parametros = {
        'n_estimators' : range(4,16),
        'criterion' : ['squared_error', 'absolute_error'],
        'max_depth' : range(2,11)
    }# definición de parámetros que vamos a revisar

utilizando python 3.9 solo cuando cambié la forma de los datos objetivo quitando un par de corchetes pude correrlo adecuadamente (y=dataset[“score”])

Código corregido para evitar warnings and deprecated :

cross_val_score o KFold
¿Tienen una aplicación que no tenga que ver con la optimización de parámetros?

Falto realizar el SPLIT de los datos.

X_train, X_test, y_train, y_test = train_test_split(X,
                                                    y,
                                                    test_size=0.25,
                                                    random_state=42)

Para evitar ciertos warnings en Jupyter Notebooks:

parametros = {
        'n_estimators' : range(4,16),
        'criterion' : ['squared_error', 'absolute_error'],
        'max_depth' : range(2,11)

Si en la actualidad les figura este error :
FutureWarning: Criterion ‘mae’ was deprecated in v1.0 and will be removed in version 1.2. Use criterion='absolute_error' which is equivalent.

les dejo lo que a mi me lo soluciono:

import pandas as pd

from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestRegressor

if name == “main”:

dataset = pd.read_csv('../Data/felicidad.csv')

print(dataset)

X = dataset.drop(['country', 'rank', 'score'], axis=1)
y = dataset['score']

reg = RandomForestRegressor()

parametros = {
    'n_estimators' : range(4,16),
    'criterion' : ["absolute_error"],
    'max_depth' : range(2,11),
}

rand_est = RandomizedSearchCV(reg, parametros , n_iter=10, cv=3, scoring='neg_mean_absolute_error').fit(X,y)

print(rand_est.best_estimator_)

print(rand_est.best_params_)

print(rand_est.predict(X.loc[[0]]))

#implmentacion_randomizedSearchCV

import pandas as pd
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestRegressor

dataset = pd.read_csv(‘felicidad.csv’)
X = dataset.drop([‘country’, ‘score’,‘rank’], axis=1)
y = dataset[‘score’]

modelo = RandomForestRegressor()

parametros = {
‘n_estimators’: range(4,15), #busque entre 4 y 15 arboles
’criterion’: [‘mse’,‘mae’],
‘max_depth’: range(2,11) #que tan profundo el arbol
}

#estimador 10 iteraciones maximo y divida en 3 grupos
#3 = 2 de training y 1 de test
#scoring = con que deseamos medir
rand_est = RandomizedSearchCV(modelo,parametros,n_iter=10, cv=3, scoring=‘neg_mean_absolute_error’).fit(X,y)

print("")
print("Mejores criterios a usar son ",rand_est.best_estimator_)
print("Mejores parametros a usar son ", rand_est.best_params_)
print(“Prediccion al primer pais [0] es “,rand_est.predict(X.loc[[0]]))
print(””)

OUTPUT:
Mejores criterios a usar son RandomForestRegressor(criterion=‘mae’, max_depth=5, n_estimators=4)
Mejores parametros a usar son {‘n_estimators’: 4, ‘max_depth’: 5, ‘criterion’: ‘mae’}
Prediccion al primer pais [0] es [7.51200008]

Parametros de GridSearchCV

estimator: el modelo que está utilizando.
params_grid: el objeto de diccionario que contiene los hiperparámetros que desea probar.
scoring: métrica de evaluación
cv: número de validaciones cruzadas para cada conjunto de hiperparámetros
verbose: cuanto más alto, más mensajes se imprimirán.
n_jobs: número de trabajos que se ejecutarán en paralelo
pre_dispatch: controla el número de trabajos que se pueden realizar en paralelo (para evitar problemas de memoria)
iid: asume que los datos se distribuyen de forma idéntica e independiente. El valor predeterminado es falso.
refit: una vez que se encuentran los mejores parámetros, reajuste el estimador
error_score: valor para asignar al puntaje si ocurre un error al ajustar el estimador
return_train_score: incluya puntajes de tren en cv_results_

Mis resultados

{'criterion': 'mse', 'max_depth': 10, 'n_estimators': 6}

print('Predict: ', rand_est.predict(X.loc[[0]]))
print('Real: ', str(y[0]))

Predict:  [7.53700018]
Real:  7.537000179

Super acertado 🤩

Mis resultados:

================================================================
Best estimator: RandomForestRegressor(criterion='mae', max_depth=7, n_estimators=12)
================================================================
Best params: {'n_estimators': 12, 'max_depth': 7, 'criterion': 'mae'}
================================================================
predict: [7.50891674]