Quasi tutti hanno familiarità con dataset bidimensionali e la maggior parte degli studenti universitari solitamente hanno familiarità con set di dati tridimensionali . Tuttavia, i set di dati moderni sono raramente bidimensionali o tridimensionali. Nell'apprendimento automatico è normale avere dozzine se non centinaia di dimensioni e anche i set di dati generati dall'uomo possono avere una dozzina di dimensioni. Allo stesso tempo, la visualizzazione è un primo passo importante per lavorare con i dati. In questo post del blog, esplorerò come possiamo usare Python per lavorare con dati multidimensionali.
L'analisi dei dati multidimensionale è un'analisi informativa dei dati che tiene conto di molte relazioni.
Perchè grafici su dati multidimensionali ?
Viviamo in un mondo dominato dalla grafica e non solo dalle cose quotidiane che vediamo. Che ne dici di quelli che hanno lo scopo di trasmettere una sorta di messaggio? I rivenditori inondano le loro vetrine con elementi visivi che promuovono i loro ultimi prodotti, scansioniamo i nostri canali di notizie preferiti per immagini sul tempo imminente e ci divertiamo con le immagini dell'ultimo successone. Non sorprende, data la nostra affinità con la nostra vista. Ma come fanno i loro creatori a catturare la nostra attenzione così facilmente? Come fanno a rendere questi effetti visivi così efficaci? Ci sono una serie di fattori che entrano in gioco e la visualizzazione dei dati è l'area che li esamina.
Che cos'è la visualizzazione dei dati?
La visualizzazione dei dati riguarda il piacere degli occhi. Ma più precisamente, si tratta di creare elementi visivi informativi che ci insegnino qualcosa rapidamente. A volte, questi elementi visivi sono semplici e trasmettono il minimo. Ma a volte succede così tanto che facciamo fatica a stare al passo. Ad esempio, pensa al tuo cellulare. La schermata principale contiene una serie di pulsanti multicolori che, con un semplice tocco, ti portano a una serie di istanze di visualizzazione dei dati: mappe stradali, riepiloghi meteorologici costantemente aggiornati, l'andamento dell'uso della batteria , i grafici dei like e follower di instagram oppure i grafici delle azioni. La visualizzazione dei dati ha un impatto su molti aspetti della nostra vita, come puoi facilmente vedere.
Come riconoscere una dataset multidimensionale
Nel senso più semplice, una dimensione è una variabile presa in considerazione. Consideriamo un semplice grafico per il momento. È una trama di una relazione tra due aspetti o variabili. L'indipendente lungo un asse (X) e il dipendente lungo l'altro (Y). Diciamo che questo è bidimensionale. Niente di sconvolgente, lo impariamo alle elementari. L'idea si estende a tre dimensioni aggiungendo un terzo aspetto o variabile (Z). Pensando in questo modo, multidimensionale significa semplicemente aggiungere ulteriori aspetti o variabili da considerare.
Quali sono alcuni metodi di visualizzazione dei dati multidimensionali?
Tutto ciò che è multidimensionale, con 3 dimensioni o meno, è facile da capire. Viviamo in un mondo tridimensionale e possiamo relazionarci con esso. Ma che dire di quattro o più dimensioni? La visualizzazione dei dati gestisce questo in uno dei due modi. Se la quarta dimensione è il tempo, allora osserviamo le prime tre dimensioni mentre cambiano nel tempo. Se il tempo non è coinvolto, rappresentiamo le dimensioni tre e superiori, fianco a fianco, come rappresentazioni tridimensionali separate. In sostanza, scomponiamo il problema in una serie di pezzi tridimensionali.
Ora mettiamo mano al codice.
Come creare grafici su dati multidimensionali con Python?
A partire dall'importazione delle librerie rilevanti come NumPy (gestione dei calcoli matematici), panda (manipolazioni di DataFrame), matplotlib (la libreria di visualizzazione OG più vicina all'interprete Python e allo sviluppo "C" ) e, ultimo ma non meno importante, seaborn (costruito su matplotlib offre più opzioni e un aspetto migliore e una sensazione comparativa).
Scarica questo dataset per seguire il nostro tutorial :
Ora crea un nuovo file python o notebook e inizia a seguirci con il codice.
#importiamo le librerie necessarie
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
#carichiamo i dati
df_original = pd.read_csv("diabetes.csv")
#print(df_original.head())
cols = [c for c in df_original.columns if c not in ["Pregnancies", "Outcome"]]
df = df_original.copy()
df[cols] = df[cols].replace({0: np.NaN})
print(df.head())
la rimozione dei valori mancanti o inutili dal set di dati è sempre il passaggio prioritario. Qui stiamo prima sostituendo il valore 0 con NaN.
#capiamo quali colonne hanno valori Null
#Nello step prima abbiamo sostituito i NaN
# NaN != Null
df.info()
ora possiamo vedere che in alcune colonne ci sono alcuni valori Null come Spessore della pelle, Insulina, BMI , ecc. [ Nota che abbiamo 8 colonne quindi 8 dimensioni ]
Visualizzazione dei dati multidimensionali
Quindi, sorprendentemente nessuno è utile per visualizzare i dati. Utilizzando head, possiamo vedere che questo set di dati utilizza 0 per non rappresentare alcun valore, a meno che una povera anima sfortunata non abbia uno spessore della pelle di 0. Se vogliamo fare più di quanto ci aspettiamo dai dati, possiamo usare la funzione descritta di cui abbiamo parlato nella sezione precedente.
df.describe()
Output:
Matrice a dispersione dei dati multidimensionali con Python
Scatter Matrix è uno dei migliori grafici per determinare la relazione ( per lo più lineare ) tra le molteplici variabili di tutti i dataset; quando vedrai il grafico lineare tra due o più variabili che indica l' elevata correlazione tra quelle caratteristiche, può essere una correlazione positiva o negativa .
pd.plotting.scatter_matrix(df, figsize=(10, 10));
Dall'immagine sopra, possiamo dire che questo grafico da solo è abbastanza descrittivo in quanto ci mostra la relazione lineare tra tutte le variabili nel set di dati. Ad esempio, possiamo vedere che lo spessore della pelle e l' IMC condividono tendenze lineari.
PS: a causa dei grandi nomi delle colonne, come puoi vedere, potresti vederli sovrapposti ma può essere migliorato ( ma è fuori dallo scopo dell'articolo).
il grafico a dispersione ci fornisce sia gli istogrammi per le distribuzioni lungo la diagonale che molti grafici a dispersione 2D fuori diagonale . Non che questa sia una matrice simmetrica, quindi guardo semplicemente la diagonale e sotto di essa normalmente. Possiamo vedere che alcune variabili hanno molta dispersione e alcune sono correlate (cioè, c'è una direzione nella loro dispersione). Questo ci porta a un altro tipo di trama, cioè la trama di correlazione .
df2 = df.dropna()
colors = df2["Outcome"].map(lambda x: "#44d9ff" if x else "#f95b4a")
pd.plotting.scatter_matrix(df2, figsize=(10,10), color=colors);
Output:
Grafici di correlazione dei dati multidimensionali con Python
Prima di entrare in una discussione approfondita con il grafico di correlazione, dobbiamo prima capire la correlazione e, per questo motivo, stiamo usando il metodo corr() di panda che restituirà il coefficiente di correlazione di Pearson tra due input di dati. In poche parole, questi grafici quantificano facilmente quali variabili o attributi sono correlati tra loro.
df.corr()
Output:
sb.set(rc={'figure.figsize':(11,6)})
sb.heatmap(df.corr());
Output:
In un grafico di correlazione supportato da seaborn o matplotlib , possiamo confrontare la correlazione più alta e quella più bassa tra le variabili usando la sua tavolozza di colori e scala. Nel grafico sopra, più chiaro è il colore, maggiore è la correlazione e viceversa . Ci sono alcuni inconvenienti in questo grafico di cui ci libereremo nel prossimo grafico.
sb.heatmap(df.corr(), annot=True, cmap="viridis", fmt="0.2f");
ora si può vedere che anche questa è una matrice simmetrica . Ma permette subito di evidenziare gli attributi più correlati e anti-correlati . Alcuni potrebbero essere solo il buon senso – ad esempio Gravidanza v Età – ma alcuni potrebbero darci una visione reale dei dati.
Qui, abbiamo anche usato alcuni parametri come annot= True in modo da poter vedere i valori correlati e anche una certa formattazione.
Istogrammi 2D dei dati multidimensionali con Python
Gli istogrammi 2D vengono utilizzati principalmente per l'elaborazione delle immagini, mostrando l' intensità dei pixel in una determinata posizione dell'immagine. Allo stesso modo, possiamo anche usarlo per altre affermazioni di problemi, dove abbiamo bisogno di analizzare due o più variabili come istogrammi bidimensionali o tridimensionali , che forniscono Dati multidimensionali.
Per il resto di questa sezione, utilizzeremo un set di dati diverso con più dati.
df2 = pd.read_csv("height_weight.csv")
df2.info()
df2.describe()
Output:
plt.hist2d(df2["height"], df2["weight"], bins=20, cmap="magma")
plt.xlabel("Height")
plt.ylabel("Weight");
Output:
abbiamo anche lavorato con istogrammi unidimensionali per dati multidimensionali, ma ora è per l'analisi univariata se vogliamo ottenere la distribuzione dei dati di più di una caratteristica, dobbiamo spostare la nostra attenzione sugli istogrammi 2-D . Nel grafico 2-D sopra l'altezza e il peso sono tracciati l'uno rispetto all'altro, mantenendo il C-MAP come magma .
Trame di contorno su dati multidimensionali con Python
È un po' difficile ottenere informazioni dall'istogramma 2D, vero? Troppo rumore nell'immagine. E se proviamo a fare un diagramma di contorno? Dovremo cestinare i dati noi
Ogni alternativa entra in scena quando quella originale presenta degli inconvenienti. Allo stesso modo, nel caso degli istogrammi 2-D diventa un po' difficile ottenere le informazioni da esso poiché c'è tanto rumore nel grafico. Quindi ora andremo con un diagramma di contorno
hist, x_edge, y_edge = np.histogram2d(df2["height"], df2["weight"], bins=20)
x_center = 0.5 * (x_edge[1:] + x_edge[:-1])
y_center = 0.5 * (y_edge[1:] + y_edge[:-1])
plt.contour(x_center, y_center, hist, levels=4)
plt.xlabel("Height")
plt.ylabel("Weight");
Output:
Ora possiamo vedere che questo diagramma di contorno è molto meglio di un istogramma 2-D complesso e rumoroso in quanto mostra la chiara distribuzione tra altezza e peso contemporaneamente. C'è ancora spazio per migliorare. Se useremo la trama di KDE di Seaborn, gli stessi contorni saranno smussati e più chiaramente informativi.
Conclusione
Fin dall'inizio dell'articolo, ci concentriamo principalmente sulla visualizzazione dei dati per i dati multidimensionali e, in questo viaggio, abbiamo esaminato tutti i grafici/trame importanti che potrebbero derivare approfondimenti relativi al business dai dati numerici da più funzionalità tutto in una volta. Nell'ultima sezione, tratteremo tutti questi grafici in poche parole.
Per prima cosa abbiamo visto una matrice di dispersione che ci mostra la relazione di ogni variabile con l'altra. Quindi viene utilizzata la mappa di calore del mare per ottenere un approccio migliore all'analisi multivariabile .
Poi sono arrivati gli istogrammi 2-D, dove possiamo andare con l'analisi delle variabili binarie, cioè 2 variabili possono essere viste contemporaneamente e possiamo ottenere informazioni da esse.
Alla fine, siamo venuti a conoscenza della trama Contour, che ci ha aiutato a ottenere una versione migliore degli istogrammi 2-D poiché rimuove il rumore dall'immagine e ha un'interpretazione più chiara.
Comments