Ho un set di dati con un numero enorme di funzioni, quindi l'analisi della matrice di correlazione è diventata molto difficile. Voglio tracciare una matrice di correlazione che otteniamo usando la funzione dataframe.corr()
dalla libreria pandas. C'è una funzione incorporata fornita dalla libreria pandas per tracciare questa matrice?Matrix di correlazione utilizzando i panda
risposta
È possibile utilizzare matshow()
da matplotlib:
plt.matshow(dataframe.corr())
Prova questa funzione, che visualizza anche i nomi delle variabili per la matrice di correlazione:
def plot_corr(df,size=10):
'''Function plots a graphical correlation matrix for each pair of columns in the dataframe.
Input:
df: pandas DataFrame
size: vertical and horizontal size of the plot'''
corr = df.corr()
fig, ax = plt.subplots(figsize=(size, size))
ax.matshow(corr)
plt.xticks(range(len(corr.columns)), corr.columns);
plt.yticks(range(len(corr.columns)), corr.columns);
versione heatmap di Seaborn:
import seaborn as sns
corr = dataframe.corr()
sns.heatmap(corr,
xticklabels=corr.columns.values,
yticklabels=corr.columns.values)
È possibile osservare la relazione tra le caratteristiche o disegnando una mappa di calore da una matrice marina o di dispersione dai panda.
Scatter Matrix:
pd.scatter_matrix(dataframe, alpha = 0.3, figsize = (14,8), diagonal = 'kde');
Se si desidera visualizzare asimmetria di ogni funzione, come pure - utilizzare pairplots Seaborn.
sns.pairplot(dataframe)
Sns Heatmap:
import seaborn as sns
f, ax = pl.subplots(figsize=(10, 8))
corr = dataframe.corr()
sns.heatmap(corr, mask=np.zeros_like(corr, dtype=np.bool), cmap=sns.diverging_palette(220, 10, as_cmap=True),
square=True, ax=ax)
L'uscita sarà una mappa correlazione delle caratteristiche. vedere l'esempio di seguito.
La correlazione tra di alimentari e detersivi è alto. Analogamente:
Pdoducts ad alta correlazione:- e alimentari e detersivi.
- Milk and Grocery
- latte e Detergents_Paper
- latte e Deli
- surgelati e prodotti freschi.
- Frozen and Deli.
Da doppi grafici: è possibile osservare lo stesso insieme di relazioni da doppi grafici o matrice di dispersione. Ma da questi possiamo dire che i dati sono normalmente distribuiti o meno.
Nota: Quanto sopra è stesso grafico in base ai dati, che viene utilizzato per disegnare heatmap.
La heatmap di Seaborn è elegante ma presenta prestazioni scadenti su matrici di grandi dimensioni. Il metodo matshow di matplotlib è molto più veloce. – anilbey