Reto: procesando un dataset

5/16

Lectura

隆Hola! Te doy la bienvenida a esta clase donde comenzaremos a poner a prueba lo que has aprendido en los cursos previos de ciencia de datos e inteligencia artificial de Platzi y en este.

Recuerda que para avanzar con esta clase deber谩s haber tomado los siguientes cursos:

Te reitero que es muy importante que conozcas estos temas y ya tengas las habilidades para que puedas aprender con facilidad y seguir con el curso hasta el final. Aprender machine learning en un principio no es una tarea sencilla, pero con la preparaci贸n adecuada y dedicaci贸n podemos obtener este conocimiento de forma trascendental.

Let鈥檚 go for it! 馃挭

Nuestra notebook de ejercicios

Para esta clase tendr谩s una notebook en Google Colab donde encontrar谩s piezas de c贸digo con explicaciones sobre el paso a paso para procesar y analizar un dataset antes de comenzar a aplicar algoritmos de machine learning.

Accede al notebook aqu铆.

Crea una copia de este notebook en tu Google Drive o utilizalo en el entorno de Jupyter notebook que prefieras.

En el notebook tambi茅n encontrar谩s ejercicios que deber谩s resolver por tu cuenta. Sigue las instrucciones dentro del notebook y comparte tus resultados en los comentarios de esta clase.

En dado caso de que tengas alguna duda o no puedas completar alguno de los ejercicios, al final del notebook encontrar谩s una secci贸n con las respuestas, pero antes de revisarlas da el m谩ximo esfuerzo para realizar los ejercicios. As铆 aprender谩s mucho m谩s.

De igual forma te invito a que dejes en comentarios cualquier duda, dificultad o pregunta que tengas al momento de seguir el notebook y realizar los ejercicios. Con mucho gusto la comunidad de Platzi te ayudar谩.


隆Te deseo mucho 茅xito y nos vemos en el pr贸ximo m贸dulo! Comenzaremos a detallar los diferentes modelos que existen de machine learning. 馃

Aportes 23

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Pienso que tambi茅n se deber铆a compartir Notebooks comentados para el resto de cursos, ayudan mucho.

Resultados de preguntas del reto 2a:
P1: variables categ贸ricas.
P2: variables cuantitativas.
P3: variable cuantitativas.
Por favor feedback con respecto a las respuestas.

Hay una herramienta muy buena para gr谩ficar llamada Seaborn. Es un wrapper de matplotlib pero considero tiene mejores funcionalidades y una mejor sintaxis, permite realizar gr谩ficos m谩s atractivos.

import seaborn as sns

data['Diabetes']=data.apply(
    lambda row: 'Diabetic' if row.Outcome == 1 else 'Notdiabetic', axis=1)

sns.scatterplot(x='BloodPressure', y='Age', hue='Diabetes', 
                data=data,
                style='Diabetes',
                alpha=0.80,
                palette=['purple', '#55CCCC']
               ).set(title='Blood Pressure v. Age range of patients')```

Resultados de preguntas del reto 4:
P1: vsupervisado-regresi贸n.
P2: supervisado-clasificaci贸n.
P3: no supervisado-clustering.

De reto, los de dispersion

Si tiene diabetes no hay correlacion entre presion arterial y edad
PERO SI NO TIENE DIABETES SI HAY CORRELACION ENTRE EDAD BAJA Y PRESION ARTERIAL BAJA

Info del reto:

Este es mi c贸digo a los retos:

RETO 1:

binvalues = [20, 25, 30, 35, 40, 85]
plt.figure(figsize=(10,8))
plt.subplot(1,1,1)
plt.hist(data['Age'], bins=binvalues, facecolor="g", alpha=0.4,
         edgecolor='black', linewidth=2)
plt.title("Age range of patients")
plt.ylim([0,510])
plt.xlabel("Age")
plt.ylabel("Count")
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.show()

Resultado:

RETO 2:

plt.figure(figsize=(10,8))
plt.subplot(1,1,1)
plt.hist(data['Age'], bins=5, facecolor="g", alpha=0.4,
         edgecolor='black', linewidth=2)
plt.title("Age range of patients")
plt.ylim([0,510])
plt.xlabel("Age")
plt.ylabel("Count")
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.show()

Resultado:

RETO 3:

diabetic = data[data["Outcome"] == 1]
notdiabetic = data[data["Outcome"] == 0]

plt.rcParams['font.size'] = 15 
f = plt.figure(figsize=(8,8))
ax = f.add_subplot(2,1,1)
ax.scatter(diabetic["BloodPressure"], diabetic["Age"], alpha=0.25, c='r')
ax.set_title("Diabetic: Age range of patients v. Blood Pressure")
ax.set_ylabel("Age")
ax.set_xlabel("Blood Pressure")

ax = f.add_subplot(2,1,2)
ax.scatter(notdiabetic["BloodPressure"], notdiabetic["Age"], alpha=0.25, c='b')
ax.set_title("Not diabetic: Age range of patients v. Blood Pressure")
ax.set_ylabel("Age")
ax.set_xlabel("Blood Pressure")

ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

f.tight_layout() 

Resultado:

Es muy notable que las personas de menor edad est谩n concentradas en la gr谩fica de Not diabetic. Adem谩s, su Blod Pressure ronda entre los 60 a 100.

Punto 4:
a) Tienes un conjunto de datos de una empresa de ropa y deseas predecir el volumen de ventas de vestidos en el pr贸ximo mes. 驴Qu茅 tipo de problema es?
RTA: Aprendizaje supervisado

b) Al igual que en la primera pregunta, est谩s utilizando un conjunto de datos de ropa. En lugar de predecir el volumen de ventas, querr谩s saber si vender谩s al menos 1000 de un determinado tipo de vestido. 驴Qu茅 tipo de problema es este?
RTA: Aprendizaje supervisado

c) Tienes informaci贸n sobre c贸mo compran ropa los clientes en tu tienda. Tienes un conjunto de datos de sus compras, segmentado en categor铆as: la cantidad de pantalones, camisas, vestidos y faldas que compra cada cliente. Deseas segmentar a tus clientes en diferentes grupos para poder enviar anuncios a cada grupo, seg煤n lo que quieran usar. 驴Qu茅 tipo de problema podr铆a ser este?

RTA: Aprendizaje no supervisado

Mi an谩lisis del Scatter, punto 3:

Al obtener los dos scatter (Con diabetes y sin diabetes) podemos deducir lo siguiente: No existe correlaci贸n en ninguno de los 2. (Pacientes sin diabetes y pacientes con diabetes), esto debido a que no forma ning煤n patr贸n que permita definir una correlaci贸n negativa, positiva u otras.
Nota: Llegu茅 incluso a dudar del primer gr谩fico, sobre una posible baja correlaci贸n positiva, pero lo descarto debido a qu茅 hay muchos puntos dispersos y no logro divisar un patr贸n claro.

Amo lo bien documentado qu茅 est谩 ese colab :3

Tienes un conjunto de datos de informaci贸n de ventas sobre equipos electr贸nicos. Una de las columnas del conjunto de datos describe qu茅 es el producto: tableta, tel茅fono inteligente, TV, computadora. 驴Qu茅 tipo de datos es este?

Respuesta: El tipo de dato es una variable cat茅gorica.

  1. A partir del mismo conjunto de datos de equipos electr贸nicos anterior, tienes informaci贸n sobre el precio de cada art铆culo. 驴Qu茅 tipo de datos es este?

Es un dato Cuantitativo y puede ser de tipo float

  1. Tienes informaci贸n sobre el kilometraje (distancia recorrida) de varios autom贸viles en un concesionario. 驴Qu茅 tipo de informaci贸n es esta?

Es un dato cuantitativo y puede ser de tipo entero.

Pregunta 1

Tienes un conjunto de datos de una empresa de ropa y deseas predecir el volumen de ventas de vestidos en el pr贸ximo mes. 驴Qu茅 tipo de problema es?

R: Supervisado

Pregunta 2

Al igual que en la primera pregunta, est谩s utilizando un conjunto de datos de ropa. En lugar de predecir el volumen de ventas, querr谩s saber si vender谩s al menos 1000 de un determinado tipo de vestido. 驴Qu茅 tipo de problema es este?

R: Supervisado

Pregunta 3

Tienes informaci贸n sobre c贸mo compran ropa los clientes en tu tienda. Tienes un conjunto de datos de sus compras, segmentado en categor铆as: la cantidad de pantalones, camisas, vestidos y faldas que compra cada cliente. Deseas segmentar a tus clientes en diferentes grupos para poder enviar anuncios a cada grupo, seg煤n lo que quieran usar. 驴Qu茅 tipo de problema podr铆a ser este?

R: No supervisado

Pregunta 1

Tienes un conjunto de datos de informaci贸n de ventas sobre equipos electr贸nicos. Una de las columnas del conjunto de datos describe qu茅 es el producto: tableta, tel茅fono inteligente, TV, computadora. 驴Qu茅 tipo de datos es este?
R: Categoricas tipo string

Pregunta 2
A partir del mismo conjunto de datos de equipos electr贸nicos anterior, tienes informaci贸n sobre el precio de cada art铆culo. 驴Qu茅 tipo de datos es este?
R: float

Pregunta 3
Tienes informaci贸n sobre el kilometraje (distancia recorrida) de varios autom贸viles en un concesionario. 驴Qu茅 tipo de informaci贸n es esta?
R: float

reto 1:

resultado reto 1:

reto 2:

resultado reto 2:

reto 3:

resultado reto 3:

2a:
pregunta 1:
variable categ贸rica
pregunta 2:
variable cuantitativa
pregunta 3:
variable cuantitativa

I share the results of the challenge in my deepnote notebook.
Deepnote_notebook

Respuestas:

1- Int64 y categ贸rical鈥 depende de como lo clasifiquen
2-Float64
3- Float64

3a-1-
f = plt.figure(figsize=(8,4))
ax = f.add_subplot(1,1,1)
data[鈥淎ge鈥漖.hist(ax=ax, edgecolor=鈥榖lack鈥, linewidth=2, bins=85)
ax.set_title(鈥淎ge range of patients鈥)
ax.set_ylim([0, 510])
ax.set_xlabel(鈥淎ge鈥)
ax.set_ylabel(鈥淐ount鈥)
f.tight_layout()

3a-2-
f = plt.figure(figsize=(8,4))
ax = f.add_subplot(1,1,1)
data[鈥淎ge鈥漖.hist(ax=ax, edgecolor=鈥榖lack鈥, linewidth=2, bins=5)
ax.set_title(鈥淎ge range of patients鈥)
ax.set_ylim([0, 510])
ax.set_xlabel(鈥淎ge鈥)
ax.set_ylabel(鈥淐ount鈥)
f.tight_layout()

3b-1-
plt.rcParams[鈥榝ont.size鈥橾 = 15
f = plt.figure(figsize=(8,8))
ax = f.add_subplot(2,1,1)
ax.scatter(notdiabetic[鈥淏loodPressure鈥漖, notdiabetic[鈥淎ge鈥漖, alpha=0.25, c=鈥榬鈥)
ax.set_title(鈥淒iabetic: Age range of patients v. Blood Pressure鈥)
ax.set_ylabel(鈥淎ge鈥)
ax.set_xlabel(鈥淏lood Pressure鈥)

4 -1- aprendizaje supervisado - Regresi贸n
4-2- aprendizaje supervisado - Clasificaci贸n
4-3- aprendizaje no supervisado

respuesta a 3b: Ejercicio del reto 1:

diabetic = data[data["Outcome"] == 1]
notdiabetic = data[data["Outcome"] == 0]

plt.rcParams['font.size'] = 15 
f = plt.figure(figsize=(8,8))
ax = f.add_subplot(2,1,1)
ax.scatter(diabetic["BloodPressure"], diabetic["Age"], alpha=0.25, c='r')
ax.set_title("Diabetic: Age range of patients v. Blood Pressure")
ax.set_ylabel("Age")
ax.set_xlabel("Blood Pressure")

plt.rcParams['font.size'] = 15 
f = plt.figure(figsize=(8,8))
ax = f.add_subplot(2,1,1)
ax.scatter(notdiabetic["BloodPressure"], notdiabetic["Age"], alpha=0.25, c='b')
ax.set_title("Not Diabetic: Age range of patients v. Blood Pressure")
ax.set_ylabel("Age")
ax.set_xlabel("Blood Pressure")

f.tight_layout() 

2a: Preguntas del reto
A partir de las siguientes preguntas, debes identificar el tipo de datos que se usar铆a en cada situaci贸n. Deja tus resultados en los comentarios de la clase donde encontraste este notebook.

Pregunta 1
R: Object, variable categorica

Pregunta 2
R: float64, variable cuantitativa

Pregunta 3
R: float64, variable cuantitativa

La verdad estoy confundido por las respuestas de mis coompa帽eros, ya que preguntan que tipod e dato, no que tipo de variable, es curioso como se puede responder mal a una pregunta por malinterpretar la intencion de quien pregunta.

Me pareci贸 muy buena idea la forma de ense帽ar de este curso deber铆an ponerlo en pr谩ctica en los dem谩s

Solucion Preguntas 2a

1-. Son datos categoricos
2-. Son datos flotantes
3-. Son Datos Flotantes

Solucion 3a Reto 1

binvalues = [20, 25, 30, 35, 40, 85]
bins = binvalues
fig, ax= plt.subplots(1,1,figsize=(8,4))
data["Age"].hist(ax=ax, bins=bins, edgecolor="lightblue",
                 linewidth=2, color="darkblue")
plt.ylim(0,510)
plt.xlim(15,100)
plt.xlabel("Count")
plt.ylabel("Edad")
plt.title("Age Histogram")
plt.show()

Solucion 3a Reto 2

plt.figure(figsize=(8,4))
data["Age"].hist(bins=5, edgecolor="lightblue", 
                 linewidth=2, color="darkblue")
plt.subplot(1,1,1)
plt.ylim(0,510)
plt.ylabel("Count")
plt.xlabel("Age")
plt.title("Age Histogram V.2")

Solucion 3b Reto 1

diabetic = data[data["Outcome"] == 1]
notdiabetic = data[data["Outcome"] == 0]

plt.rcParams['font.size'] = 15 
f = plt.figure(figsize=(8,8))
ax = f.add_subplot(2,1,1)
ax.scatter(diabetic["BloodPressure"], diabetic["Age"], alpha=0.25, c='r')
ax.set_title("Diabetic: Age range of patients v. Blood Pressure")
ax.set_ylabel("Age")
ax.set_xlabel("Blood Pressure")

# Solucion
ax= f.add_subplot(2,1,2)
ax.scatter(notdiabetic["BloodPressure"], notdiabetic["Age"], alpha=0.25, c='b')
ax.set_xlabel("BloodPreassure")
ax.set_ylabel("Age")
ax.set_title("Not diabetic: Age range of patients v. Blood Pressure")

f.tight_layout() 

4 Respuestas Aprendizaje Supervisado y no Supervisado

Pregunta 1

Tienes un conjunto de datos de una empresa de ropa y deseas predecir el volumen de ventas de vestidos en el pr贸ximo mes. 驴Qu茅 tipo de problema es?
Aprendizaje Supervisado Algoritmo de Regresion

Pregunta 2

Al igual que en la primera pregunta, est谩s utilizando un conjunto de datos de ropa. En lugar de predecir el volumen de ventas, querr谩s saber si vender谩s al menos 1000 de un determinado tipo de vestido. 驴Qu茅 tipo de problema es este?
Aprendizaje Supervisado Algoritmo de Clasificacion

Pregunta 3

Tienes informaci贸n sobre c贸mo compran ropa los clientes en tu tienda. Tienes un conjunto de datos de sus compras, segmentado en categor铆as: la cantidad de pantalones, camisas, vestidos y faldas que compra cada cliente. Deseas segmentar a tus clientes en diferentes grupos para poder enviar anuncios a cada grupo, seg煤n lo que quieran usar. 驴Qu茅 tipo de problema podr铆a ser este?
Aprendizaje no supervisado Algoritmo de Clusterizacion