Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Creando más features

24/32
Recursos

Aportes 43

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Está interesante (y creo que util) el hecho de crear features automaticamente. pero me queda la duda…en qué casos debo usar esta tecnica si previamente hemos estudiado cada feature para elegir las correctas… o simplemente es para tratar de mejorar el modelo. mmm…
Vamos a ver,.

Si desean ampliar información de como transformar en números las variables categóricas les comparto el siguiente link:

All about Categorical Variable Encoding

https://towardsdatascience.com/all-about-categorical-variable-encoding-305f3361fd02

Y descubrimos que…
BinaryEncoding no nos ayudó 😦

épico xD

Codificadores clásicos

El primer grupo de cinco codificadores clásicos se puede ver en un continuo de incrustación de información en una columna (Ordinal) hasta k columnas (OneHot). Estas son codificaciones muy útiles para que las entiendan los profesionales del aprendizaje automático.

Ordinal: convierte etiquetas de cadena en valores enteros del 1 al k. Ordinal.
OneHot: una columna para cada valor para comparar con todos los demás valores. Nominal, ordinal.
Binario: convierte cada número entero en dígitos binarios. Cada dígito binario tiene una columna. Alguna pérdida de información pero menos dimensiones. Ordinal.
BaseN: codificación ordinal, binaria o superior. Nominal, ordinal. No agrega mucha funcionalidad. Probablemente evitar.
Hashing: como OneHot pero con menos dimensiones, cierta pérdida de información debido a colisiones. Nominal, ordinal.
Suma: al igual que OneHot, excepto que un valor se mantiene constante y se codifica como -1 en todas las columnas.

Ojo, aqui hay dos incosistencias. Primero, no se puede quitar el index al archivo importado. Es decir, esta linea no es correcta porque quita los indices.
categoricals = categoricals.reset_index(drop=True).fillna(0)

Lo que hay que hacer es llenar los huecos con ceros en caso de no tener director o actor.
categoricals = categoricals.fillna(0)

Ahora si se pueden concatenar X y categoricals. Recuerden que no se pueden quitar los indices a categoricals porque están referenciados 1 a 1 con X no en orden sino por número. Hay 4104 registros pero las llaves llegan a 4384.

Pienso que falto una explicación más profunda sobre algunos métodos utilizados y entre esos el Binary Encoding, ya que no se explica bajo cuáles parámetros esta técnica asigna un número a las categorías.

No entiendo por que usa el archivo movies_obj.csv, de todo lo que llevamos en el curso ninguno se ha guardado de esa manera. No veo la gracia de solo tomar un archivo del GitHub proporcionado por el docente sin ni siquiera saber lo que contiene o haberlo elaborado. En el momento de ejecutar en un proyecto personal todos los pasos que se han visto en el curso, uno quedará bloqueado sin saber como aplicar esa técnica en un proyecto propio, falencia tras falencia.

Es muy importante la toma de decisiones frente a los datos faltantes, en el minuto 9:34 se ejecuta un comando que para otro dataframe podria ser perjudicial, por lo que se recomienda estar atento a las decisiones que se tomen frente a los dataframe para garantizar el éxito del análisis.

Yo solo trato hacer el paso a paso de lo que va diciendo el profesor, lamentablemente no entiendo mucho de lo que habla, creo que se deben tener otros conceptos previos…

Recomiendo que hagan el dataset de “categoricals” ustedes mismos siguiendo los pasos del preprocessing para numéricos. De esta forma van a tener un dataset con la misma cantidad de filas que tienen su X. A mi la diferencia de dimensiones me estaba generando dudas y problemas, así que saqué de mi mismo preprocessing mi data set para poder probar el binary encoding.

Ojo con encoder binario, no esta garantizado que funcione, aun faltan estudios

El Category_Encoders ha sido uno de los elementos que más he usado en lo que hago. Gracias Juan Pablo, Gracias Platzi!

Features categóricas son las features que pueden tomar un número finito de valores, como genero, país, grado académico, etc.

Tengo problemas con la instalacion de category_encoders. Me pide requisitos previos.

Tema muy complejo para mi porque no comprendo nada de estadistica, ya lo complementare haciendo la ruta de inteligencia artificial, ps si nos fijamos este curso es de los ultimos de la ruta y ya se deben de tener conceptos previos demasiado claros.

No les recomiendo poner el video a 1.75x, no se entiende nada xd.

encoder.fit_transform(X_binenc).shape

---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-272-f3375a75435d> in <module>()
----> 1 encoder.fit_transform(X_binenc).shape

5 frames

/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in __getattr__(self, name)
   5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5273                 return self[name]
-> 5274             return object.__getattribute__(self, name)
   5275 
   5276     def __setattr__(self, name: str, value) -> None:

AttributeError: 'DataFrame' object has no attribute 'unique'

Clase 24: Copiar y Pegar

El tema cada vez se pone interesante y complejo…buen reto…

¿Alguien sabe por qué me aparece esto? En mi x tengo una variable de más que el profesor (gross)

Yo obtengo un 90% de score

Alguin sabe porque me da ( 4104,31) en el shape??

Haciendo el ejercicio, sobreescribí por error X, que era la variable que veniamos trabajando y afecte todo. Tuve que volver a empezar, pero para no limpiar todas las variables solo lo hice con las ultimas y encontré esta instrucción

categoricals = ‘’

y se limpia la variable, solo es poner el nombre de la variable que se necesita

  • las variables categóricas podemos transformarlas a números.

Muy bueno como crear las features

  • Cuando el an{alisi de features no nos arrojan mejores resultados, es hora de ver un modelo de ML que se acomode más al problema.

0.9999999999999997
0.9999999999999909
Si obtengo estos valores indicaría que el modelo es bastante aproximado al esperado?

Excelente explicación de las features categóricas. Cada vez vamos incorporando más herramientas útiles

complejo…

Que cantidad de conocimiento nuevo, gracias.

un tema muy interesante… solo queda practicar

Muy buen tema… se entiende la idea… solo queda practicar…

No me es posible importar category_encoders en google colab. Saben alguna alternativa?

Compañeros, les comparto un video interesante de One-hot Encoding https://www.youtube.com/watch?v=v_4KWmkwmsU

Que interesante tecnica de encoding binario, es una excelente herramienta para manejar datos no numericos, y mas eficiente que la tecnica de features que puede aumentar el tamano de la matriz cuando se tienen muchos datos.

No fue posible completar los ejercicios de la clase porque hay diferencia entre los archivos X.csv y X_opening.csv. Lo cuál genera inconsistencia al aplicar el comando:
Xb_train, Xb_test, y_train, y_test = train_test_split(X_binenc,y)

igual que a otros compañeros a mi tambien me da shape de 31 en lugar de 29 como al profesor al aplicar el fit.transform, osea que el binario que se esta generando de la categoria mas grande es una posicion mas grande que el binario mas grande generado por el profesor, pero como es esto posible si estamos usando el mismo csv? al comienzo crei que era alguna diferencia entre usar colab y jupyter pero veo compañeros que usan jupyter y les pasa lo mismo; no se el porque pero tal vez se deba algun cambio que le haya sucedio a category_encoders, por lo menos a mi me sale una advertencia de usar otra libreria que me recomiendan mas en lugar de eso, ojala alguien sepa y me afirme o corrija mi hipotesis

Buenas tardes, no he podido importar category_encoders, me deja instalarlo con !pip install category_encoders, pero cuando voy a importarlo con import category_encoders as ce no me deja, he hecho de todo y aun sigueme apareciendo esto

ModuleNotFoundError Traceback (most recent call last)
<ipython-input-189-081d60ada241> in <module>()
1 get_ipython().run_line_magic(‘matplotlib’, ‘inline’)
----> 2 import category_encoders

ModuleNotFoundError: No module named ‘category_encoders’

Que puedo hacer, la verdad quiero terminar todo el ejercicio y esto me tiene parado. Ayuda!

Cuando hice la función X_binenc = pd.concat([X,categoricals],axis=1), pese a que X y categóricals tenían 4104 registros, el resultado de X_binenc me arrojó 4297 registros, podrían ayudarme a entender por qué??

Gracias.

Una vez mas tome como ejemplo el archivo x.csv de excel y modifiqué un poco el codigo:

# Encoding one-hot
#ESTE ENCODING CONSISTE EN ASIGNARLE UNA COLUMNA A CADA CATEGORIA Y RELLENARLA CON 0 Y DE LA SIGUIENTE FORMA
d = pd.DataFrame([['Chile','Colombia','Colombia','Venezuela'],['hombre','mujer','hombre','mujer']])
d = d.T
d.columns = pd.Index(['pais','genero'])
d


pd.get_dummies(d)


X = pd.read_csv(io.BytesIO(uploaded['x.csv']))
X.head()

X.apply(pd.Series.nunique).sort_values()



# Encoding Binario
!pip install category_encoders

X = pd.read_csv(io.BytesIO(uploaded['x.csv']))
X.head(2)

categoricals = X.reset_index(drop=True).fillna(0)


X_binenc = pd.concat([X,categoricals],axis=1)
X_binenc.head()


import category_encoders as ce
encoder = ce.BinaryEncoder(cols=['movie_title','TITTLE_MOVIE'])


Xb_train, Xb_test, y_train, y_test = train_test_split(X_binenc,y)
X_train, X_test = (Xb_train[X.columns],Xb_test[X.columns])
model_binenc = Lasso()
model = Lasso()
model_binenc.fit(Xb_train,y_train)
model.fit(X_train,y_train)
print(model_binenc.score(Xb_test,y_test))
print(model.score(X_test,y_test))```

Error: model_binenc.fit(Xb_train,y_train)

print(model_binenc.score(Xb_test,y_test))
print(model.score(X_test, y_test))

Este fue mi resultado:
0.8616198736564016
0.8536304973278551