Fundamentos prácticos

1

Aplica Platzidoro en este curso y asegura el éxito de tu aprendizaje

2

Los fundamentos de machine learning que aprenderás

3

Introducción a Numpy

4

Introducción y manipulación de datos con Pandas

5

Introducción a ScikitLearn

6

Comandos básicos de las librerías usadas en el curso (Numpy, Pandas y ScikitLearn)

Regresión Lineal y Logística

7

¿Qué es la predicción de datos?

8

Sobreajuste y subajuste en los datos

9

Regresión lineal simple y regresión lineal múltiple

10

Regresión lineal simple con Scikit-Learn: división de los datos

11

Regresión lineal simple con Scikit-Learn: creación del modelo

12

Regresión logística con Scikit-Learn: definición y división de datos

13

Regresión logística con Scikit-Learn: evaluación del modelo

14

Matriz de confusión

15

PlatziDoro Cápsula 1

Árboles de decisión

16

¿Qué es un árbol de decisión y cómo se divide?

17

Comprendiendo nuestro data set para la creación de un árbol de decisión

18

Creando un clasificador con Scikit-Learn

19

Entrenamiento del modelo de clasificación

20

Visualización del árbol de decisión

K-Means

21

¿Qué es K-Means?

22

Cargando el data set de Iris

23

Construcción y evaluación del modelo con K-Means

24

Graficación del modelo

25

PlatziDoro Cápsula 2

Aprendizaje profundo

26

Introducción al aprendizaje profundo

27

Conceptos básicos de Tensor Flow

28

Red neuronal convolucional

29

Conociendo el set de datos para la creación de la red neuronal

30

Crea y entrena tu primera red neuronal convolucional con Tensor Flow

31

Evaluación de la red convolucional

32

PlatziDoro Cápsula 3

Despedida

33

Recomendaciones para analizar correctamente tu problema

34

Siguientes pasos para continuar aprendendiendo de Machine Learning

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Comprendiendo nuestro data set para la creación de un árbol de decisión

17/34
Recursos

Aportes 45

Preguntas 3

Ordenar por:

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

Pequeña corrección, no es que quiera ser quizqillosos pero la gráfica no muestra la distribución de cuantos hombre y mujeres sobrevivieron, la interpretación seria de cuantos pasajeros habia en barco

Aquí esta como sobrevivieron acorde a su género

men=train_df.loc[train_df['Sex']=='male']
women=train_df.loc[train_df['Sex']=='female']

men.Survived.value_counts().plot(kind='bar', color=['b','r'])
plt.title('Distribucion de hombre sobrevivientes')
plt.show()

women.Survived.value_counts().plot(kind='bar', color=['b','r'])
plt.title('Distribucion de mujeres sobrevivientes')
plt.show()

Hago una pequeña corrección, al final del vídeo estamos haciendo una distribución de los pasajeros, no de los sobrevivientes

El código de la distribución de sobrevivientes por genero seria

train_df[(train_df.Survived == 1)].Sex.value_counts().plot(kind = 'bar', color = ['b' , 'r'])
plt.title('Distribucion de sobrevivientes')

Ejemplo de Entrenamiento de un árbol de decisión
Trabajaremos con el dataset Titanic.

  • importamos nuestras librerías:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from seaborn import tree

% matplotlib inline
sns.set()
  • Leemos nuestro dataset (en este caso está dividido en datos de entrenamiento y prueba)
test_df = pd.read_csv(<nombre_archivo>)
train_df = pd.read_csv(<nombre_archivo>)
  • Para saber a que tipo de datos pertenece cada columna y la cantidad de datos nulos en cada una usamos el método info:
train_df.info()

Nota
Podemos generar visualizaciones rápidas de los datos con el método plot:

train_df.Survived.value_counts().plot(kind='bar',color=('b','r'))
plt.show()

¡Vengo del futuro y en el siguiente video se encuentran los demás archivos!

😃

Vi hace unos años este mismo ejemplo dado por el Profesor y Ministro de Industria de Uruguay, este ejemplo me motivo a estudiar programacion! :’)

En el dataset si hay valores nulos

muchachos ya que el conjunto de training no esta cargado en los archivos, pueden descargarlo de kaggle. dejo el link
https://www.kaggle.com/c/titanic/data

chicos el archivo de train.csv lo encuentran en la proxima clase

  • Importante tener el dataset libre de datos nulos, si hay datos nulos en el dataset, la predicción o decisión será errónea.

no me quedo claro la función de la linea

%matplotlib inline

Comparto el código que usé para separar los sobrevivientes por género, aunque entre los comentarios he encontrado y aprendido formas más eficientes de hacerlo que la mía.

men=train_df.loc[train_df['Sex']=='male']
women=train_df.loc[train_df['Sex']=='female']
sobr_hombr=men.Survived.value_counts()[1]
sobr_muj=women.Survived.value_counts()[1]
genero = ['Hombres','Mujeres']
conteo_sobr = [sobr_hombr,sobr_muj]
plt.bar(genero,conteo_sobr,color = ['b','r'])
plt.title('Sobrevivientes del Titanic por género')
plt.show()

Hola en el Dataset si hay valores nulos
Se puede validar de la siguiente manera:
train_df.isna().sum()
![](

Complementando el código que nos compartió el compañero Arn.Rojas en este comentario, agregué la distribución de hombres y mujeres no sobrevivientes y ajusté el tamaño para ver mejor la distribución.
Código:

labels = ['Total a bordo', 'Total Sobrevivientes','Total Fallecidos']
hombres_vivos = [train_df.Sex.value_counts()[0],train_df[(train_df.Survived == 1)].Sex.value_counts()[1],train_df[(train_df.Survived == 0)].Sex.value_counts()[0]]
mujeres_vivas = [train_df.Sex.value_counts()[1],train_df[(train_df.Survived == 1)].Sex.value_counts()[0],train_df[(train_df.Survived == 0)].Sex.value_counts()[1]]

x = np.arange(len(labels)) 
width = 0.35 

fig, ax = plt.subplots(figsize=(8,7))  # Localización de las etiquetas
rects1 = ax.bar(x - width/2, hombres_vivos, width, label='Hombres')
rects2 = ax.bar(x + width/2, mujeres_vivas, width, label='Mujeres')

# Agregue texto para etiquetas, títulos y etiquetas personalizadas del eje x, etc.
ax.set_title('Distribución de pasajeros del Titanic')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()

def autolabel(rects):
  '''Adjunta una etiqueta de texto sobre cada barra recta, mostrando su altura.'''
  for rect in rects:
    height = rect.get_height()
    ax.annotate('{}'.format(height),
                xy=(rect.get_x() + rect.get_width() / 2, height),
                xytext=(0, 3),  # Desplazamiento vertical de 3 puntos
                textcoords="offset points",
                ha='center', va='bottom')

autolabel(rects1)
autolabel(rects2)

plt.show()

Resultado:

la grafica de la maestra es para saber la proporcin del total de pasajeros ,
para saber el porcentraje de sobrevivientes separados en genero hacemos una mascara y luego se la pasamos a los datos a plotear

mask_sur=train_df.Survived==1 # mascara de sobrevivientes

train_df.Sex[mask_sur.tolist()].value_counts().plot(kind="bar", color=['b', 'r'])
plt.title('distribucion de sobrevivientes')
plt.show()

Si no conocen la página de Kaggle es excelente para practicar machine learning, Ahí pueden encontrar el reto del Titanic y ganar puntos:
https://www.kaggle.com/c/titanic

Importante mencionar que la grafica no muestra los sobrevivientes. Muestra la distribucion por sexo de las personas que viajaban.

Para ver la distribucion por sexo de los sobrevivientes utilice el siguiente codigo. Alli se ve que sobrevivieron muchas mas mujeres que hombre; casi el 75%, mientras que solo el 18% de los hombre lo logro.

train_df[train_df.Survived ==1].Sex.value_counts().plot(kind= 'bar', color=['r','b'])
plt.title('Distribucion de Sobrevivientes por Sexo')
plt.show()

Me encanta la estructura de este curso, una breve introducción de cada tema y al ruedo, con explicaciones muy claras y ejemplos con datasets que complementan muy bien todo lo explicado.

mmm… pero sí tiene valores nulos 🤔

Yo vengo del futuro y no sirve el archivo Titanic

No encuentro el archivo del set de entrenamiento

data_set_train.Sex.value_counts()
male      577
female    314
Name: Sex, dtype: int64```

Para saber un poco más sobre seaborn pueden revisar este enlace.

En ésta página explican cada una de las variables (columnas) que tiene el DataSet. Esto ayuda muchísimo a la hora de entender la información que contiene.

Para los que prefieran ver en forma porcentual los supervivientes.

values = train[train.Survived == 1].Sex.value_counts()/train.Sex.value_counts()*100
values.plot(kind = 'bar', color =  ['b','r'])
plt.title('Distribucion de sexo porcentual')
plt.show()

Para ver la relación de los sobrevivientes según su sexo podemos utilizar catplot de Seaborn.

import seaborn as sns 
import matplotlib.pyplot as plt 

# Countplot 
sns.catplot(x ="Sex", hue ="Survived", kind ="count", data = **train_df**) 

hola comunidad exactamente si querías hacer lo que la profesora dijo debes unir los df y hacer una categorización por sobrevivo o no yo lo hice asi

df_all = df_train.append(df_test)
data = df_all[df_all.Survived.notnull()]
sns.histplot(x='Sex',hue='Survived',data=data,multiple='dodge')

Para no tener que descargar los datasets pueden usar estar URLs:

TRAIN_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv"
TEST_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/eval.csv"
train_df = pd.read_csv(TRAIN_DATA_URL)
test_df = pd.read_csv(TEST_DATA_URL)

Vale la pena mencionar que este es un reto de Kaggle, ¿Y qué es Kaggle?

Kaggle es una plataforma web que reúne la comunidad Data Science más grande del mundo.

En esa plataforma hay foros de ciencia de datos y ML, así como competencias. Estos datos son parte de la competencia de bienvenida. En ese sentido, la idea de los dos documentos es el siguiente:

  • titanic-train.csv les va a servir para entrenar y validar su modelo. Tiene la columna survived, es decir, las etiquetas que les van a servir para clasificar a cada persona.
  • titanic-test.csv, por otro lado, no tiene la columna survived y la idea es que envíes tus predicciones a la plataforma de Kaggle (sin saber las respuestas) para poder competir con otras personas y enfrentar los resultados de cada modelo.

Como esta hay muchas competencias similares que vale la pena explorar: https://www.kaggle.com/competitions/titanic/overview

El gráfico muestra el número de pasajeros, este es mi código,
el parámetro rot es para que la etiqueta este en horizontal.

Para visualizar la supervivencia de hombres y mujeres en barras apiladas.

sex_survived = train_df.groupby(['Sex', 'Survived'])['Sex'].count().unstack('Survived')

sex_survived.plot(kind='bar', stacked=True)

Siguiendo como lo han dicho varios compañeros, realmente lo que se menciona en el video fue la distribución de pasajeros.

La tasa de supervivientes por sexo es totalmente distinto:

Primero separamos los datasets por su sexo

men = train_df.loc[train_df['Sex']=='male']
women = train_df.loc[train_df['Sex']=='female']

Luego, usando el mismo código de antes, podemos contar los supervivientes por sexo:

men_survived = men.Survived.value_counts()[1]
women_survived = women.Survived.value_counts()[1]

De esta forma ya teniendo la cantidad de sobrevivientes por sexo, podemos encontrar el porcentaje así:

men_survived_rate = men_survived/men.shape[0]
women_survived_rate = women_survived/women.shape[0]
print("El porcentaje de hombres sobrevivientes fue de :{:.2f}".format(men_survived_rate*100))
print("El porcentaje de hombres sobrevivientes fue de :{:.2f}".format(women_survived_rate*100))

Esto nos daría:

El porcentaje de hombres sobrevivientes fue de :18.89
El porcentaje de hombres sobrevivientes fue de :74.20

Lo que en realidad estamos graficando es la distribución de pasageros por género. Les comparto el código un poco más simplificado para generar la misma visualización.

sns.countplot(data=df_train, x='Sex')
plt.title('Distribución por género')

Distribución de Sobrevivientes no de pasajeros

train_df[train_df['Survived']==1]['Sex'].value_counts().plot(kind='bar', color = ['b','r'])
plt.title('Survivors Distribution per Gender')
plt.show()
sobrevivientes = df_train[df_train['Survived']==1]

alguien sabe como hacer las grande la gráfica??’

yo también vengo del futuro, una pregunta, se carga el archivo de ‘titanic-test.csv’ y se le asigna a una variable, pero no veo que se lo vuelva a usar, a menos que se me haya pasado por alto y este comentario este demás.
alguien sabe para que lo cargamos???

Descripción de las columnas del dataset:

![](
Alguien sabe por que no me aparece el dataset separado correctamente ??

Los datos del numero de la cabina si tienen varios nulos, ahí como podriamos hacer para arreglar mas el data set? o cuanto podríamos tolerar en datos nulos?

Otra forma de realizar el proceso de imprimir sobrevivientes de acuerdo al genero.

#Imprimiendo sobrevientes de acuerdo a si es genero masculino o femenino
#1. Seleccionamos columnas Survived y Sex
features_cols=['Survived','Sex']
train_df_columns=train_df[features_cols]


#2. Aplicando filtro solamente de personas que sobrevivieron
filter_1=train_df_columns[('Survived')]==1
train_df_columns=train_df_columns[filter_1]

#Sacando numero total de hombres como mujeres que habian en el barco y se salvaron
num_survived=train_df_columns.Sex.value_counts()

#Imprimiendo
train_df_columns.Sex.value_counts().plot(kind='bar',color=['b','r'])
plt.title('Distribución de sobrevivientes')
plt.text(-0.05,234,num_survived[0],size=12)
plt.text(0.95,110,num_survived[1],size=12)
plt.show()

Esta fue mi solucion para determinar cual fue la distribucion de sobrevivientes segun el sexo

train_df.loc[train_df.Survived == 1].Sex.value_counts().plot(kind = 'bar', color = ['r', 'b'])
plt.title('Distribucion de sobrevivientes')
plt.show()

Nota: La profesora dice que no hay datos nulos, pero la verdad es que en la Edad y en la Cabina sí hay datos nulos.