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 鈥渃riterion鈥 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 鈥榤se鈥 y 鈥榤ae鈥 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[鈥渟core鈥漖)

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 鈥榤ae鈥 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(鈥榝elicidad.csv鈥)
X = dataset.drop([鈥榗ountry鈥, 鈥榮core鈥,鈥榬ank鈥橾, axis=1)
y = dataset[鈥榮core鈥橾

modelo = RandomForestRegressor()

parametros = {
鈥榥_estimators鈥: range(4,15), #busque entre 4 y 15 arboles
鈥檆riterion鈥: [鈥榤se鈥,鈥榤ae鈥橾,
鈥榤ax_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=鈥榥eg_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(鈥淧rediccion al primer pais [0] es 鈥,rand_est.predict(X.loc[[0]]))
print(鈥濃)

OUTPUT:
Mejores criterios a usar son RandomForestRegressor(criterion=鈥榤ae鈥, max_depth=5, n_estimators=4)
Mejores parametros a usar son {鈥榥_estimators鈥: 4, 鈥榤ax_depth鈥: 5, 鈥榗riterion鈥: 鈥榤ae鈥檥
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]