No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Introducción a las regresiones con Deep Learning: Planteamiento del problema

19/22
Recursos

Aportes 11

Preguntas 0

Ordenar por:

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

Les comparto mi implementación:
https://drive.google.com/drive/folders/1QtyH3RAT3Rh1Guee_UF-txTnZKmAgx81?usp=sharing

Realice el flujo de trabajo en dos notebooks, en el primero hago la ingeniería de datos y en el segundo aplico la división de datos y configuración del modelo.

Creo que hubiera sido útil para los propósitos del reto haber visto una sección de implementación optimización de hiperparámetros en el curso, de modo que el diseño de la red fuera más fácil y no una cuestión de ensayo y error que implica tiempo y coste computacional. De todas maneras, me gustó el reto y siento que aprendí.

Mejor que nos den todo el codigo nomas xd.
Lo que hice fue hacer LabelEncoder a las columnas que contengan strings, y reemplazar los valores NaN por la media, en el caso de la columna cylinders existen tres tipos de datos:strings, NaN y uno raro que es “o”, asumi que los “o” son 0 y extraje los enteros.Lo malo es que la arquitectura de NN que hice me da una perdida altisima, se debe hacer una mejor configuracion, me gustaria que me ayuden en eso.Gracias, les dejo el codigo si les sirve.

import pandas as pd
import numpy as np
df = pd.read_csv("cc.csv")

from sklearn.preprocessing import LabelEncoder as Le
#Encoding 
columnas = list(df.columns)
columnas.remove("cylinders")
columnas.remove("price")
columnas.remove("year")
print(columnas)

for column in columnas:
  drop_nan = df[column].dropna()
  le = Le()
  le.fit(drop_nan)
  mean = round(np.mean(le.transform(drop_nan)))
  #Replace with mean if its NaN and encode if its string
  #Nan type is float and the others' is string
  df[column] = df[column].apply(lambda x: le.transform([x])[0] if type(x) == str else mean)


#We drop NaN values and get the mean
def get_int(value):
  try:
    return int(list(value)[0])
  except:
    return 0

cil = df["cylinders"].dropna().apply(get_int)
mean = round(np.mean(cil.values)))


#We fill the NaN with the mean, the "o" with 0 and extract the integer of the strings
def get_int_(value):
  try:
    return int(list(value)[0])
  except:
    if value == mean:
      pass
    else:
      return 0
    
df["cylinders"] = df["cylinders"].fillna(mean).apply(get_int_)

#We turn all the columns into integer columns
for col in df.columns:
  try:
    df[col] = df[col].astype(int)
  except:
    pass

#We test it
print(df.dtypes)

df.head(4)

#We have all columns filled with integers!!!, lets build our NN:
from sklearn.model_selection import train_test_split
from keras.layers import Dense
from keras import Sequential
import tensorflow as tf

x = df.drop(["price"], axis = 1)
y = df["price"]

x_train,x_test, y_val, y_test = train_test_split(x,y,test_size = 0.2, random_state = 0 )

network = Sequential([
                Dense(units = 11, kernel_initializer = 'normal' ,input_shape = (11,), activation = tf.nn.relu),
                Dense(units = 6, activation = tf.nn.relu),
                Dense(units = 3, activation = tf.nn.relu),
                Dense(units = 1, activation = tf.keras.activations.linear)
                ])

_ , x_val, _ , y_val = train_test_split(x_train, y_train , test_size = 0.1, random_state = 0)

network.compile(optimizer = "adam", loss = "mean_squared_error", metrics = ['mean_absolute_percentage_error'])

network.fit(x_train, y_train, epochs = 100, batch_size = 32, validation_data = (x_val, y_val), verbose = 0)

network.evaluate(x_test, y_test)

df= cars.copy()
for col in categoricas:
    df = pd.concat([df, (pd.get_dummies(df[col])).astype(int)], axis=1)
    df.drop(columns=[col],inplace=True)
#Al crear las variables dummies se crean varias columnas referentes a categorias
# 'other' que no aportan ningún valor al dataset por lo cual las eliminamos
df.drop('other', axis=1, inplace=True)
print(df.shape)
df.head(3)

a mi no me funciona este codigo

Este curso esta muy loco

Hay como un error al final de la clase, ademas parece que ha sido cortada.

tube muchos problemas, voy a tener que re ver los cap anterior,es muy largo y es re pesado

me dio 0.4 menor o igual yo vi jajaja
igual le di mas epocas seguro es menor ahora

Chicos no hicimos ninguno optimisation de hiper parámetros

Les comparto unas notas y los notebooks que use, espero les sean de utilidad, sigamos haciendo comunidad.

https://github.com/rb-one/Curso_RedesNeuronales_ScikitLearn/blob/master/Notes/notes.md