Implementar un modelo de regresión (Lasso)
Clase 17 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Clase 17 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Edna Katherine Conde Vega
Jhenner Sneyder Tigreros
Loren Johanna Vásquez Rivera
Helmer Fernando Jaguandoy Tobar
Jonathan Alexander Ramos Martínez
William Arevalo
Felipe Andrés González Quintero
Esmeralda Palacios
Rodrigo Urquizo Yepez
María José Medina
Esmeralda Palacios
Usuario anónimo
Andrea Otero Cano
Pablo Fernández
Jean Paul
Alan Vazquez
Jean Pierre Giraldo Castañeda
Usuario anónimo
Julian David Orozco Colorado
Juan Andrés Oviedo Castro
Cristian Orozco Benjumea
Diego Forero
Cristian Orozco Benjumea
Nicolas Enrique Duque Aguirre
Camilo Andrés Gutiérrez Velásquez
Luis Ariosto Serna Cardona
Esmeralda Palacios
Luis Alberto Parra Piñeros
Yeiner Leon Roldan
Yeiner Leon Roldan
Usuario anónimo
Usuario anónimo
Julian David Orozco Colorado
Stephany Catherin Sandoval Castro
Daniel Fernando Murcia Perdomo
julian orrego
Luis Alejandro Hernández Contreras
Javier Humberto Cuadros Picon
Carlos Daniel Pimentel Díaz
Usuario anónimo
Usuario anónimo
Usuario anónimo
Usuario anónimo
Me parece interesante compartir lo siguiente:
En la parte de las ++predicciones++ los valores generados para cada uno de nosotros van a ser ++diferentes++, esto debido a que cuando usamos el train_test_split en nuestro entorno de desarrollo se definió ++aleatoriamente++ cuáles valores serían usados para train y cuáles para test, y cada uno de nosotros tiene una seed o ++semilla++ diferente en la generación de estos aleatorios. Por tanto, si quisieramos que fueran ++iguales++ deberíamos definir esta semilla antes de usar este método.
Acá una mejor explicación de números pseudoaleatorios: https://es.wikipedia.org/wiki/Número_pseudoaleatorio
Para este caso especifico, todos los que implementen estos métodos tengan los mismos valores que los que el profesor tiene debe modificarse el método de split por el siguiente.
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.4, random_state=11)
Donde el parámetro random_state es el que define la semilla que se utilizara para dividir los conjuntos de datos.
Así subí el archivo en colab:
from google.colab import files uploaded = files.upload() # Suben el archivo desde el computador. import io X = pd.read_csv(io.BytesIO(uploaded['x.csv'])) # Dataset is now stored in a Pandas Dataframe
Muchas Gracias
WOW. Muchas gracias, en verdad
Otra forma de ver el grafico, depronto sirve para comparar mas la predicción
bien
Elegante!
Deberian explicar que hace el modelo de regression Laso, aca lo explican muy bien, partiendo del modelo de regresion Ridge https://www.youtube.com/watch?v=Q81RR3yKn30 https://www.youtube.com/watch?v=NGf0voTMlcs
¿Por qué usar Lasoo? El modelo Lasso se implementa cuando hay pocos features que se relacionen directamente con la variable a predecir. En este algoritmo se penaliza los features que aportan poca información volviéndolos cero, eliminando el ruido que producen en el modelo. Más informacion:
wooooaaa!
Con la forma de explicar hace ver la implementación muy fácil, tratare de aplicar estos métodos y modelos para trabajar con otros data set y verificar su funcionamiento.
¿Cómo se hace todo esto pero con datos cualitativos es decir de tipo object?
Supongo que te tendras que buscar la vida para pasar ese tipo de datos cualitativos a unos cuantitativos. A mi se me ocurre trabajar con exadecimal o algo por el estilo.
Te refieres a trabajar con strings? Hay metodos de featurizacion con strings como por ejemplo:
Siento que el ejemplo esta algo truqueado, ya que desde la preparacion de los datos al final se hizo de manera muy apresurada, ya que se dejo la columna gross que era del csv original, asi que cuando el modelo este entrenando, para muchos de los caso que ese campo es igual al del target (worldwide_gross), entonce va ha tener la "respuesta", pienso que por eso a muchos tienen un overfitting en sus modelos
Inclusive borrando todos los features dejando solo el de gross me da una precision del 80% siendo que con todos los features tengo una precision del 85% Y borrando la columna de gross tengo una precision del 60%
se podria mejorar esa precision del 60% con una base de datos mas grande o con un poder computacional mas alto? osea tipo alfazero
Comparto este enlace que nos permite complementar la información sobre la regresión Lasso. https://iartificial.net/regularizacion-lasso-l1-ridge-l2-y-elasticnet/
Este aporte me parece importante, pero los otros que publicas tan de seguido son cosas que ya estan en la plataforma y no hay necesidad de ponerlas solo porque te suban puntos, que creo que es la intencion que tienes.
De acuerdo! Es volver a ver la clase en los comentarios y en mil lineas.¿Que necesidad de figurar?
A mi me da demasiado exacto, ésto es normal?
A otro compañero le dieron valores un poco diferentes
Puede ser cambios en la base de información o que la depuración hecha en los datos fue más exacta en tu caso lo que permite una mejor predicción.
Bueno el Score me dió 0.9999999742087432
Buen video, se logro el objetivo.
Hice el experimento de cargar el csv desde google drive pero con el acceso directo que tengo desde mi pc y funciono bien
funciona asi
from google.colab import files x = files.upload(), # aca se abre un menu, buscan el acceso directo de google drive que deben tener instalado en su pc y configurado X = pd.read_csv('intermediate_results.csv') # En este caso yo llame intermediate_results a mi csv, pero si lo guardaron con otro nombre debe usarse el nombre que eligieron
No debíamos eliminar la columna gross?. Ese feature es muy parecido al valor que queremos predecir por lo tanto genera un buen modelo sin mayor esfuerzo.
Seria necesario explicar esto para el bien de los demás... la base de datos, presenta un buen rendimiento y esto se debe a un posible overfitting. que sucede? el profesor Juan pablo, sin querer, deja la columna gross... Columna que debió eliminar antes de entrenar el modelo. porque comparte aproximada un 80% de los datos de las etiquetas " y". entregar información al sistema, de las posibles etiquetas con las que se va a predecir, es sobre entrenar el sistema... lo que hará que esa feature en especial, pueda describir totalmente las etiquetas worldwide_gross.
Como recomendación, para que vean un proceso mas limpio... eliminar esta feature igualmente.
X = X.drop('gross',axis=1)
No lo había analizado, pero tiene sentido, eliminaré la columna para ver los resultado
Para Traer el csv de colab primero
from google.colab import drive drive.mount('/content/gdrive',force_remount=True)
y luego
X = pd.read_csv('../content/gdrive/My Drive/Colab Notebooks/X.csv')
la primera parte funciono, pero la segunda me genera error
ya encontre el problema. olvide importar la libreria de pandas
Comparto el código completo de la actividad de esta sesión de clase:
import numpy as np import pandas as pd x = pd.read_csv('K:\Cursos MINTIC_Platzi\Curso_de_Machine_Learning_Aplicado_con_Python\Archivos de actividades/intermediate_results/X_opening.csv') x y = x['worldwide_gross'] y x = x.drop('worldwide_gross', axis = 1) x from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.4,random_state=1) print(len(X)) print(len(X_train)) print(len(X_test)) X.head(1) from sklearn.linear_model import Lasso model = Lasso() model.fit(X_train,y_train) predicted = model.predict(X_test) predicted predicted.shape import matplotlib.pyplot as plt %matplotlib inline plt.hist([predicted,y_test]);
Parce enserio con el mayor de los respetos, ese codigo ya esta en la plataforma deja de publicar tantas cosas que no son necesarias.
Yo creo que lo que el hombre busca es ganar puntos ? tampoco entiendo la verdad de su proceder...
no comprendo por que la predicion la realiza con los datos de test no debería realizarla con los datos de entrenamiento ??
Pues porque con los datos de Test (que significan de prueba) es que se verifica el modelo y los datos de entrenamiento es con los que se entrena el modelo
Hola, Tal como menciona Daniel, primero debemos ayudar a que nuestro algoritmo aprenda (esto lo hace con los datos de entrenamiento). Luego procedemos a verificar si el modelo es correcto con los datos de prueba(es decir, vamos a probar o testear el modelo que construimos)
Que conclusión en palabras reales se puede sacar de este modelo... que ingresos para que peliculas, es decir como uno con ese grafico que nos salió puede tomar una decisión?
Tengo la duda porque el profesor prefirio usar el metodo LASSO para actuar sobre la varianza e intentar agrupar los datos y no continuo en el flujo con la reducción de la dimensionalidad, teniendo en cuenta que nuestra variable X realmente contiene varias variables independientes (x1 + x2 + ... + xn) que afectan nuestra variable dependiente u objetivo.
Y = x[worldwide_gross], variable dependiente X = Varias variables independientes Formula de Regresión Y = c1x1 + c2x2 + ... + cnxn;
Agradezco mucho su respuesta y aclaración del tema.
Tal vez puede ser porque el Data Set contiene muy pocas features (dimensiones). El profesor entrena el modelo con 8 features y puede que se necesite aplicar reducción de dimensionalidad cuando se tienen 200, 400 o 1000 características. Esta página explica muy bien la maldición de la dimensionalidad.
Casi no me doy mañas para cargar los archivos a Collab desde Drive, Pero logrado con exito
Hola. ¿Cómo puedo importar los datos "X.csv"? en Google Colaborative?
Hola, con este código puedes cargar tu tabla de excel a google colab:
from google.colab import files # Para cargar archivos en google colab uploaded = files.upload()
Luego, para que puedas usar tu tabla puedes usar este código:
import io movies = pd.read_csv(io.BytesIO(uploaded['NOMBRE DADO.csv']))
Para crear un archivo csv a partir de google colab puedes usar este código:
X.to_csv('NOMBRE DADO.csv', index= False) from google.colab import files files.download('NOMBRE DADO.csv')
yo lo hago mas simple