Mappa di calore di correlazione in Seaborn

Manav Narula 16 luglio 2021
Mappa di calore di correlazione in Seaborn

La correlazione è un fattore fondamentale fondamentale per i data scientist. Racconta come le variabili in un set di dati sono correlate tra loro e come si muovono l’una rispetto all’altra. Il valore della correlazione varia da -1 a +1. 0 La correlazione indica che due variabili sono indipendenti l’una dall’altra. Una correlazione positiva indica che le variabili si muovono nella stessa direzione e una correlazione negativa indica il contrario.

Possiamo tracciare la matrice di correlazione usando il modulo seaborn. Aiuta a comprendere facilmente il set di dati e viene utilizzato molto frequentemente per il lavoro di analisi.

Questo tutorial introdurrà come tracciare la matrice di correlazione in Python usando la funzione seaborn.heatmap().

La mappa termica viene utilizzata per rappresentare graficamente i valori della matrice con diverse sfumature di colore per valori diversi. Visualizza la matrice complessiva in modo molto chiaro.

Nel codice seguente, rappresenteremo una matrice di correlazione utilizzando una mappa di calore in Python.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

sns.heatmap(df.corr())

mappa termica di correlazione in seaborn

Il codice sopra crea un grafico della mappa termica di correlazione di base. La funzione corr() viene utilizzata per restituire la matrice di correlazione del DataFrame. Possiamo anche calcolare altri tipi di correlazioni usando questa funzione. Notare che la sfumatura di colore per ogni valore nella barra dell’asse dei colori.

Possiamo anche personalizzare la figura finale utilizzando diversi parametri. Vedi il codice sotto.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

sns.heatmap(df.corr(), vmin=-1, vmax=+1, annot=True, cmap="coolwarm")

correlazione heatmap in seaborn con diversi parametri

Notare l’uso di tanti parametri. Gli argomenti vmin e vmax vengono utilizzati per specificare la scala per l’asse del colore. l’argomento cmap qui altera lo schema di colori utilizzato per la trama. Il parametro annot viene utilizzato per visualizzare i valori di correlazione sui quadrati. Possiamo inoltre utilizzare i parametri linewidth e linecolor per scurire i bordi dei quadrati e specificare il colore del bordo. Possiamo personalizzare la barra dei colori usando l’argomento cbar_kws.

Nota che se rimuovi metà dei dati su un lato della diagonale principale, non perderai alcuna informazione importante poiché viene ripetuta. Per questo motivo, possiamo anche creare una trama triangolare.

Lo snippet di codice di seguito raggiunge questo obiettivo.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

upp_mat = np.triu(df.corr())

sns.heatmap(df.corr(), vmin=-1, vmax=+1, annot=True, cmap="coolwarm", mask=upp_mat)

mappa termica di correlazione triangolare in seaborn

Nel codice sopra, usiamo prima numpy.triu(), che restituisce il triangolo superiore della matrice, e poi lo mascheriamo usando l’argomento mask della funzione heatmap(). Allo stesso modo, possiamo mascherare il triangolo inferiore usando la funzione numpy.tril().

Un’altra rappresentazione interessante che possiamo ottenere è che possiamo mappare solo una variabile e trovarne la correlazione con variabili diverse.

Per esempio,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

upp_mat = np.triu(df.corr())

sns.heatmap(df.corr()[["Day 1"]], vmin=-1, vmax=+1, annot=True, cmap="coolwarm")

correlazione heatmap in seaborn con diverse variabili

Nell’esempio sopra, tracciamo la correlazione della variabile Day 1 con altre variabili.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - Seaborn Heatmap