Sandy Paola Atencio Hernández
EstudianteAbisai Antonio Madera
EstudianteÁngel Samuel Suesca Ríos
EstudianteAlfonso Andres Zapata Guzman
EstudianteAlfonso Andres Zapata Guzman
EstudianteAlfonso Andres Zapata Guzman
EstudianteChristopher Brian Guzmán Martínez
EstudianteJeison Andres Arias Camayo
EstudianteOlga Lisethe Castellanos Galeano
EstudianteTomas Dale
EstudianteAnuar Manuel Monterrosa Bedoya
EstudianteGustavo Adolfo Marquez Prieto
EstudianteFELIX DAVID CORDOVA GARCIA
EstudianteLuis Fernando Laris Pardo
EstudianteJuan R Rossano
EstudianteLuis Fernando Laris Pardo
EstudianteTomas Dale
EstudianteBrayam Esparza
EstudianteMauricio Escobar
EstudianteBernardo Tamayo
EstudianteBernardo Tamayo
EstudianteFabian Villada
EstudianteJhon Freddy Tavera Blandon
EstudianteAntonio Demarco Bonino
EstudianteEnrique Jiménez Téllez
EstudianteJordan Anderson Huayhua Morales
EstudianteThomas Gonzalez Rodrigues
EstudianteDiego Jurado
EstudianteRomel Manrique
EstudianteSAYUMI ALEXANDRA CANCHARI LA ROSA
EstudianteSAYUMI ALEXANDRA CANCHARI LA ROSA
EstudianteAlex Xiomar Rubio Lopez
EstudianteAndres Martin
EstudianteHago un aporte, utilice estas dos lineas de código para poder sacar nuestras variables numéricas y categoricas por separado pensado en el futuro cuando nos encontremos con dataset que tengas muchas variables, espero que les sirva a todos:
creo una variable ++cols_numerica++ y en ella almaceno una lista comprimida que evaluara si mi columna es numerica o flotante
creo una variable ++cols_categorica++ y en ella almaceno una lista comprimida que evaluara si mi columna es de tipo object
cols_numericas = [colname for colname in df.columns if df[colname].dtype in ['int64', 'float64']] cols_categoricas = [colname for colname in df.columns if df[colname].dtype in ['object']]
Esta genial tu aporte. Aunque se podría mejorar al definir también la cantidad máxima de diferentes valores en las categorías que se desea encontrar. Por ejemplo hay casos en que una columna, es de tipo "Object" y que casi todo los valores son diferentes. Para este caso, podría mejorarse a:
cols_categoricas = [colname for colname in df.columns if df[colname].nunique() < 10 and df[colname].dtype == 'object']
Éste código analiza las columnas que son "Object" y que su categoría no exceda de valores únicos en 10. Puse el diez (10) solo por mencionar un ejemplo, pero uno puede definir la cantidad deseada.
Saludos 😎😌
Que bonito, thx
Pobres fumadores, pagan mas.
Otra cosa es que si hay una correlacion ascendente entre la edad y pagar mas, entre fumadores y pagar mas hay aun mas correlacion, con el sexo de la persona no sucede casi, a nivel de aseguradora segun la grafica, se cobra lo mismo.
df.corr().style.background_gradient(cmap="coolwarm", axis=None)
fig = px.imshow( df.corr(), color_continuous_scale=px.colors.diverging.RdBu[::-1], text_auto=True, zmin=-1, zmax=1, ) fig.show()
Problemas con las variables dommies? puede que ésto te pueda ayudar:
pd.get_dummies(df, columns=['sex', 'smoker', 'region'], drop_first=True, dtype='int64')
Solo me aparecía True and False, gracias por el aporte.
excelente aporte
Luego de pasar a dummies encontre una alta correlacion entre fumar y cargos 0.79
Por otra parte, no encontre correlacion entre region y fumador.
Concuerdo, entre más fumas más caro le sales al sistema de salud T.T
Otra forma de obtener la correlación:
numeric_cols = ['age', 'bmi', 'children', 'charges'] sns.set(font_scale=1.5) # Configuracion del heatmap sns.heatmap(df[numeric_cols].corr(), cbar=True, annot=True, yticklabels=numeric_cols, xticklabels=numeric_cols) plt.show()
Cuando se quiere llevar un modelo creado a producción en forma de APP por ejemplo, es necesario tener una columna de cada una de las variables categóricas, ya que por ejemplo si un usuario desea seleccionar un dato en específico para hacer una predicción .este debe en encontrarse dentro de los datos del modelos
Ciertamente, si uno quisiera ser muy permisivo con el usuario tendría que darle la oportunidad de seleccionar las variables. Lo importante a notar es lo que mencionas, hay que tener bien en claro qué variables tiene tu modelo y que sea consistente con los datos que vas a entrenar.
¿Se puede codificar las valores categorias como numericas? Supongamos como region que tuvieramos 10 valores distintos, seria asignar un numero a cada valor (ejemplo northwest = 1, southeast = 2, southwest = 3) para crear una sola columna y no varias. ¿Que ventajas tendria un modo sobre otro?
El problema con esta codificación es que la mayoría de los algoritmos tratan estos como valores numéricos y entonces puedes sesgar los resultados, imagina que el 49% de los datos son 1 y el 49% son 3 y el 1% es 2, entonces cuando el algoritmo haga las cuentas podría decir que la media es 2, pero esto no es así (además que no tiene mucho sentido hacer promedios con valores categóricos) En cambio lo que haces al crear columnas de 1s y 0s es Que los resultados se pueden ver como probabilidades, es decir, en la columna de southwest si el promedio es 0.6, quiere decir que southwest aparece en el 60% de todos los resultados. Yo es por esto y que he visto muchas veces en el primer método que mencionas, que ya no lo uso para mis algoritmos 😄 ¿Te queda alguna duda o comentario de este tema?
La data age - charges presenta 3 posibles grupos, lo que haria es utilizar otro modelo de ML para estos dos valores y evaluar si se puede crear 3 grupos o si surgen mas grupos. Igual con age-bmi podria surgir agrupaciones que no se pueden apreciar
los que pagan mas son fumadores
viejitos
Qué tal, en mi análisis he comparado:
Primero con un scatterplot la influencia que tiene bmi con charges
Despúes con un stripplot y un boxplot la influencia que podría tener sex entre la variable charges
En las líneas [magenta y cyan] de ambas gráficas están los valores promedio y mediana
no se porque no me dejó poner el link, lo dejo abajo
https://www.geeksforgeeks.org/how-to-convert-categorical-string-data-into-numeric-in-python/
gracias
La codificación one-hot de las variables categóricas 'sex', 'smoker' y 'region'. Esto creará nuevas columnas numéricas en el DataFrame df_encoded correspondientes a las categorías de cada variable.
Me puse a experimentar con scatterplot e hice este experimento:
colors = {True: 'blue', False: 'red'} df.plot(kind='scatter', x='age', y='bmi', s=32, alpha=.8, c=df['sex_male'].map(colors)) plt.gca().spines[['top', 'right']].set_visible(False) plt.show()
aqui esta mi aporte con todas las variables
Cuando hago el get_dummies en lugar de 1 y 0 me aparece True y False ¿Por qué?
hola comunidad
dividí la variable
chargesen 3 y después tome solo la primera parte y obtuve una mejor correlacion
Que tan disciplinados todos!
Otra forma de obtener las variables categóricas convertidas con scikit_learn.
categorical_cols = ['sex','smoker','region'] ohe = OneHotEncoder(drop='first') ohe.fit(df[categorical_cols]) new = ohe.transform(df[categorical_cols]) df_one_hot_encoded = df.drop(columns=['sex', 'smoker', 'region']) df_one_hot_encoded[ohe.get_feature_names_out()] = new.toarray() df_one_hot_encoded.head(5)
| age | bmi | children | charges | sex_male | smoker_yes | region_northwest | region_southeast | region_southwest | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 19 | 27.9 | 0 | 16884.9 | 0 | 1 | 0 | 0 | 1 |
| 1 | 18 | 33.77 | 1 | 1725.55 | 1 | 0 | 0 | 1 | 0 |
| 2 | 28 | 33 | 3 | 4449.46 | 1 | 0 | 0 | 1 | 0 |
| 3 | 33 | 22.705 | 0 | 21984.5 | 1 | 0 | 1 | 0 | 0 |
| 4 | 32 | 28.88 | 0 | 3866.86 | 1 | 0 | 1 | 0 | 0 |
en la vida real, escribir cada variable númerica no es una buena practica. Para identificarla reemplace por esto: numeric_cols = df.select_dtypes(include=[np.number])
#numeric_cols = ['age', 'bmi', 'children', 'charges']
me olvide agregar el .coolum queda así: import numpy as np
numeric_cols = df.select_dtypes(include=[np.number]).columns
#numeric_cols = ['age', 'bmi', 'children', 'charges']
cm = np.corrcoef(df[numeric_cols].values.T)
sns.set_theme(font_scale=1.5)
sns.heatmap(cm,annot=True, yticklabels=numeric_cols,xticklabels=numeric_cols)
Utilizando y agregando las variables booleans al grafico heatmap y revisar las correlaciones
veo una relacion entre los fumadores y los cargos que reciben