Introducci贸n al curso

1

Introducci贸n al curso de Machine Learning Aplicado con Python

C贸mo definir un problema de Machine Learning

2

Importancia de definir el problema en Machine Learning

3

Predecir el ingreso de pel铆culas de IMDB

4

Terminolog铆a de Machine Learning

5

Materiales del curso: Notebooks de Jupyter

El ciclo de ingenier铆a de Machine Learning

6

El ciclo de Machine Learning

Montar un ambiente de trabajo Pydata

7

Configuraci贸n del ambiente de trabajo con Google Collab

8

Qu茅 es y c贸mo se utiliza Numpy

9

Arrays en Numpy

10

Operaciones aritm茅ticas en Numpy

Preparaci贸n de los datos

11

Cargar los datos necesarios para el proyecto

12

Inspecci贸n de los tipos de datos

13

Inspecci贸n cuantitativa y de salud de los datos

14

Limpiar los datos

15

Manejo de datos faltantes

Modelaci贸n y evaluaci贸n

16

El objeto estimador de Scikit-Learn

17

Implementar un modelo de regresi贸n (Lasso)

18

Ajustando Modelos de Machine Learning, Underfitting y Overfitting

19

Evaluando el modelo

Feature Engineering

20

Feedback del modelamiento

21

An谩lisis exploratorio

22

Continuando con el an谩lisis exploratorio

23

Creaci贸n de features

24

Creando m谩s features

25

Selecci贸n de features y la maldici贸n de la dimensionalidad

Modelos y Evaluaci贸n m谩s avanzada

26

Cross Validation

27

Selecci贸n de modelos

28

Curvas de aprendizaje

29

Introducci贸n a Ensembles y 脕rboles de Decisi贸n

30

Random Forest y Gradient Boosting Trees

31

Optimizaci贸n de hiperpar谩metros

32

Conclusiones del curso

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鈥n 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 鈥渃ategoricals鈥 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鈥uen 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(鈥榤atplotlib鈥, 鈥榠nline鈥)
----> 2 import category_encoders

ModuleNotFoundError: No module named 鈥榗ategory_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