Para evitar que se muestren los warnings pueden ejecutar lo siguiente:
import warnings
warnings.simplefilter("ignore")
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 19
Preguntas 3
Para evitar que se muestren los warnings pueden ejecutar lo siguiente:
import warnings
warnings.simplefilter("ignore")
Codigo para ver la comparacion entre las regresiones de forma grafica:
import matplotlib.pyplot as plt
for name, estimador in estimadores.items():
estimador.fit(X_train, y_train)
predictions = estimador.predict(X_test)
print("=" * 32)
print(name)
plt.ylabel('Predicted Score')
plt.xlabel('Real Score')
plt.title('Predicted VS Real')
plt.scatter(y_test, predictions)
plt.plot(predictions, predictions,'r--')
plt.show()
El primer warning que sale, sobre el array de una dimensión se puede corregir usando numpy y la función ravel, de esta manera:
estimador.fit(x_train, np.array(y_train).ravel())
Hasta el momento, el mejor curso de Machine Learning!
solo que no es para los que apenas empiezan, creo que minino deben de tener conocimiento de otros cursos 😛
Hola!
En esta clase, además de calcular error de cada estimador, intenté calcular también es “score” de cada modelo. Como resultado obtuve esto.
print("MSE: ", mean_squared_error(Y_test, predictions))
print("Score", estimador.score(X_test, Y_test))
SVR
MSE: 0.024636332906412182
Score 0.9780019790127239
RANSAC
MSE: 1.1899164154047088e-19
Score 1.0
Huber
MSE: 1.4911035802611992e-06
Score 0.9999986685791276
Como pueden observar, con el metaestimador RANSAC obtengo un score del 100%. Desde mi punto de vista, esto debería considerarse un resultado muy optimista y que se debe de “tomarlos con pinzas” ( o con cuidado). ¿A ustedes qué les parece?
para corregir el warning por sobre pasar el número de iteraciones en el entrenamiento :
HuberRegressor(epsilon=1.35, max_iter=10000)
Un resumen de esta seccion
En regresion lineal podemos utilizar otros estimadores para evaluar el MSE (error)
-SVR
-RANSAC
-HUBER
Escogemos entre los 3 el que nos de el menor valor de error.
Es de tener cuidado que el menor estimador puede estar en notacion cientifica
print(f"MSE: {mean_squared_error(y_test, predictions):.20f}")
realize una prueba de los estimadores con un df con 10 filas de 0 al final y una sin ella, con lo que se ve la efectividad de cada uno de los regresores al manejar outliers
Si también eliminamos RANK:
SVR
MSE: 0.005844139576335231
RANSAC
MSE: 1.2666603654055215e-19
HUBER
MSE: 4.756058064851233e-10
No he podido correrlo bien, me bota el siguiente error :
‘ValueError: Found input variables with inconsistent numbers of samples: [133, 34]’
Hay una funcion interesante, gridsearchCV, que te ayuda , realizando previamente un pipeline, a realizar pruebas con distintos parametros par estimadores y este algoritmo te selecciona el optimo entre todos
Cómo se explica que al evaluar también la regresión lineal:
estimators = {
'Linear': LinearRegression(),
'SVR': SVR(gamma= 'auto', C=1.0, epsilon=0.1),
'RANSAC': RANSACRegressor(),
'HUBER': HuberRegressor(epsilon=1.35)
}
Linear MSE: 0.00000000000000000013
SVR MSE: 0.07455771301888525215
RANSAC MSE: 0.00000000000000000013
HUBER MSE: 0.00000229719234639414
.
El resultado de la lineal sea menor que SVR y HUBER, e igual a RANSAC? No debería ser peor por la presencia de los outliers?
Para graficas los 3 modelos y en resumen, SVR parece tener un MSE razonablemente bajo, lo que sugiere un buen rendimiento en la predicción de tus datos.
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(18, 6)) # 1 fila, 3 columnas
for idx, (name, estimador) in enumerate(estimadores.items()):
estimador.fit(X_train, y_train)
predictions = estimador.predict(X_test)
axes[idx].set_title(name)
axes[idx].set_ylabel('Predicted Score')
axes[idx].set_xlabel('Real Score')
axes[idx].scatter(y_test, predictions)
axes[idx].plot(predictions, predictions, 'r--')
plt.suptitle(‘Predicted vs. Real Score for Different Models’, fontsize=16)
plt.tight_layout()
plt.show()
Estos son mis resultados para el Mean Squared Error de cada uno de los estimadores, junto con el R2 score. Se puede observar que los valores están muy cerca del 1.0. Lo que sugiere que se está generando overfitting.
La regresión robusta es una técnica que maneja los valores atípicos o ruidosos en los datos al realizar el ajuste del modelo. Scikit-learn proporciona varios modelos para regresión robusta, incluyendo RANSACRegressory HuberRegressor. Estos modelos son útiles cuando se espera que los datos contengan valores atípicos que puedan afectar el rendimiento del modelo de regresión lineal.
Para formatear
print(“error medio cuadrado:” , “%.10f” % float (mean_squared_error(y_test , predictions)))
Esta fue la forma que arregle el error en Huber Regressor
en la parte donde esta el diccionario asi lo arregle
'HUBER':HuberRegressor(epsilon=1.35,max_iter=10000)
y en la iteraacion del for asi lo hice
estimador.fit(X_train,Y_train.values.ravel())
Agrupando varios aportes, con google collab
import pandas as pd
from sklearn.linear_model import (
RANSACRegressor, HuberRegressor
)
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
dataset = pd.read_csv(‘felicidad_corrupt.csv’)
#axis=1 columnas axis=0 filas
x = dataset.drop([‘country’,‘score’],axis=1)
y= dataset[[‘score’]]
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.3, random_state=42)
#Eliminar warnings
import warnings
warnings.simplefilter(“ignore”)
#4 ESTIMADORES EN DICCIONARIO, [LLAVE, VALORES]
estimadores = {
#‘Linear’: LinearRegression(),
'SVR': SVR(gamma= 'auto', C=1.0, epsilon=0.1),
#sin parametro es estimacion lineal
'RANSAC': RANSACRegressor(),
#epsilon menor toma menos valores atipicos
'HUBER': HuberRegressor(epsilon=1.35)
}
for name, estimador in estimadores.items():
estimador.fit(x_train, y_train)
predictions = estimador.predict(x_test)
#print predictor con error
print("=" * 32)
print(name," MSE :", mean_squared_error(y_test, predictions))
#grafico
plt.ylabel('Predicted Score')
plt.xlabel('Real Score')
plt.title('Predicted VS Real')
plt.scatter(y_test, predictions)
plt.plot(predictions, predictions,'r--')
plt.show()
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?