Recetas para visualización de datos con Seaborn
Tags: python, tutorial, datascience, machinelearning
Published: 2020-09-22 20:48:41

En este articulo voy a recopilar algunos bloques de código que me han sido de gran utilidad en varios proyectos de machine learning. Seaborn es una librería para visualización en Python que contiene una gran variedad de gráficos con mucha personalización.

# Gráficos básicos

Gráfico de correlación:
```python
import seaborn as sns
sns.regplot(x='1st_feature', y='2nd_feature', data=df)
```

Gráfico de datos residuales:
```python
sns.residplot(df['features'], df['target'])
```
Boxplot (o subplot), para ver outliers:
```python
sns.boxplot(x='1st_feature', y='2nd_feature', data=df)
```

Gráfico de densidad:
```python
plt.figure(figsize = (14,6))
plt.title('Plot Title')
sns.set_color_codes("pastel")
sns.distplot(df['1st_feature'], kde=True, bins=200, color="blue")
plt.show()
```

Gráfico de densidad con dos clases de objetivos:
```python
class_0 = df.loc[df['target_feature'] == 0]["1st_feature"]
class_1 = df.loc[df['target_feature'] == 1]["2nd_feature"]
plt.figure(figsize = (14,6))
plt.title('Plot Title')
sns.set_color_codes("pastel")
sns.distplot(class_0, kde=True, bins=200, color="green", label='1st feature')
sns.distplot(class_1, kde=True, bins=200, color="red", label='2nd feature')
plt.legend()
plt.show()
```

Gráfico de cajas con varios atributos:
```python
# 1st_feature= x, 2nd_feature = y, 3rd_feature = labels
def boxplot_variation(1st_feature, 2nd_feature, 3rd_feature, width=16):
    fig, ax1 = plt.subplots(ncols=1, figsize=(width,6))
    s = sns.boxplot(ax = ax1, x=1st_feature, y=2nd_feature, hue=3rd_feature,
                data=df, palette="PRGn",showfliers=False)
    s.set_xticklabels(s.get_xticklabels(),rotation=90)
    plt.show();
```

Graficando atributos importantes:
```python
tmp = pd.DataFrame({'Feature': x_train, 'Feature importance': clf.feature_importances_})
tmp = tmp.sort_values(by='Feature importance', ascending=False)
plt.figure(figsize = (7,4))
plt.title('Features importance', fontsize=14)
s = sns.barplot(x=x_train, y='Feature importance', data=tmp)
s.set_xticklabels(s.get_xticklabels(), rotation=90)
plt.show()   
```

Mapa de calor de la matriz de correlación en forma de triángulo:
```python
# corr_matrix son las correlaciones a graficar usando .corr()
mask = np.triu(np.ones_like(corr_matrix, dtype=np.bool))
f, ax = plt.subplots(figsize=(11, 9))
cmap = sns.diverging_palette(220, 10, as_cmap=True)
sns.heatmap(corr_matrix, mask=mask, cmap=cmap, vmax=.3, center=0,
            square=True, linewidths=.5, cbar_kws={"shrink": .5})
```
## Pairplots
Pairplot básico:
```python
sns.pairplot(df)
```
Seleccionando atributos:
```python
sns.pairplot(df, vars=["1st_feature", "2nd_feature"])
```
Diferentes atributos en filas y columnas:
```python
sns.pairplot(df,
                 x_vars=["1st_feature", "2nd_feature"],
                 y_vars=["3rd_feature", "4th_feature"])
```
Graficando solo el triángulo inferior y ajustando un modelo lineal:
```python
sns.pairplot(df, kind='reg', corner=True)
```

# Conclusión

Esto es todo por ahora, quizas en el futuro haga una segunda parte con mas tipos de gráficos.

¡Muchas gracias por llegar hasta aqui!