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.
Aprender los conceptos clave
Todo lo que aprenderás sobre MA con Scikit-Learn
¿Cómo aprenden las máquinas?
Problemas que podemos resolver con Scikit-learn
Las matemáticas que vamos a necesitar
Iniciar un proyecto con sklearn
Configuración de nuestro entorno Python
Instalación de librerías en Python
Datasets que usaremos en el curso
Optimización de features
¿Cómo afectan nuestros features a los modelos de Machine Learning?
Introducción al PCA
Preparación de datos para PCA e IPCA
Implementación del algoritmo PCA e IPCA
Kernels y KPCA
¿Qué es la regularización y cómo aplicarla?
Implementación de Lasso y Ridge
Explicación resultado de la implementación
ElasticNet: Una técnica intermedia
Regresiones robustas
El problema de los valores atípicos
Regresiones Robustas en Scikit-learn
Preparación de datos para la regresión robusta
Implementación regresión robusta
Métodos de ensamble aplicados a clasificación
¿Qué son los métodos de ensamble?
Preparación de datos para implementar métodos de ensamble
Implementación de Bagging
Implementación de Boosting
Clustering
Estrategias de Clustering
Implementación de Batch K-Means
Implementación de Mean-Shift
Optimización paramétrica
Validación de nuestro modelo usando Cross Validation
Implementación de K-Folds Cross Validation
Optimización paramétrica
Implementación de Randomized
Bonus: Auto Machine Learning
Salida a producción
Revisión de nuestra arquitectura de código
Importar y exportar modelos con Sklearn
Creación de una API con Flask para el modelo
Cierre del curso
Material adicional para consultar
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 18
Preguntas 4
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]
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.