ML - Comprensione dei dati con la visualizzazione

introduzione

Nel capitolo precedente, abbiamo discusso l'importanza dei dati per gli algoritmi di Machine Learning insieme ad alcune ricette Python per comprendere i dati con le statistiche. C'è un altro modo chiamato Visualizzazione, per comprendere i dati.

Con l'aiuto della visualizzazione dei dati, possiamo vedere come appaiono i dati e che tipo di correlazione è tenuta dagli attributi dei dati. È il modo più veloce per vedere se le caratteristiche corrispondono all'output. Con l'aiuto di seguire le ricette di Python, possiamo comprendere i dati ML con le statistiche.

Grafici univariati: comprensione indipendente degli attributi

Il tipo più semplice di visualizzazione è la visualizzazione a variabile singola o "univariata". Con l'aiuto della visualizzazione univariata, possiamo comprendere ogni attributo del nostro set di dati in modo indipendente. Di seguito sono riportate alcune tecniche in Python per implementare la visualizzazione univariata:

Istogrammi

Gli istogrammi raggruppano i dati in contenitori ed è il modo più veloce per avere un'idea della distribuzione di ogni attributo nel set di dati. Le seguenti sono alcune delle caratteristiche degli istogrammi:

  • Ci fornisce un conteggio del numero di osservazioni in ogni contenitore creato per la visualizzazione.

  • Dalla forma del bidone, possiamo facilmente osservare la distribuzione, cioè il tempo è gaussiano, asimmetrico o esponenziale.

  • Gli istogrammi ci aiutano anche a vedere possibili valori anomali.

Esempio

Il codice mostrato di seguito è un esempio di script Python che crea l'istogramma degli attributi del set di dati Pima Indian Diabetes. Qui, useremo la funzione hist () su Pandas DataFrame per generare istogrammi ematplotlib per averli tracciati.

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.hist()
pyplot.show()

Produzione

L'output sopra mostra che ha creato l'istogramma per ogni attributo nel set di dati. Da questo, possiamo osservare che forse gli attributi età, pedi e test possono avere distribuzione esponenziale mentre massa e plas hanno distribuzione gaussiana.

Grafici di densità

Un'altra tecnica rapida e semplice per ottenere la distribuzione di ogni attributo è rappresentata dai grafici di densità. È anche come un istogramma ma ha una curva liscia disegnata attraverso la parte superiore di ogni contenitore. Possiamo chiamarli come istogrammi astratti.

Esempio

Nell'esempio seguente, lo script Python genererà diagrammi di densità per la distribuzione degli attributi del set di dati di Pima Indian Diabetes.

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)
pyplot.show()

Produzione

Dall'output di cui sopra, la differenza tra i grafici di densità e gli istogrammi può essere facilmente compresa.

Diagrammi di scatola e baffi

I grafici Box e Whisker, chiamati anche boxplots in breve, sono un'altra tecnica utile per rivedere la distribuzione della distribuzione di ogni attributo. Le seguenti sono le caratteristiche di questa tecnica:

  • È di natura univariata e riassume la distribuzione di ogni attributo.

  • Traccia una linea per il valore medio, cioè per la mediana.

  • Disegna una casella intorno al 25% e al 75%.

  • Disegna anche baffi che ci daranno un'idea della diffusione dei dati.

  • I punti all'esterno dei baffi indicano i valori anomali. I valori anomali sarebbero 1,5 volte maggiori della dimensione della diffusione dei dati centrali.

Esempio

Nell'esempio seguente, lo script Python genererà diagrammi di densità per la distribuzione degli attributi del set di dati di Pima Indian Diabetes.

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False,sharey=False)
pyplot.show()

Produzione

Dal grafico sopra della distribuzione degli attributi, si può osservare che età, test e pelle appaiono distorti verso valori più piccoli.

Grafici multivariati: interazione tra più variabili

Un altro tipo di visualizzazione è la visualizzazione multivariabile o "multivariata". Con l'aiuto della visualizzazione multivariata, possiamo comprendere l'interazione tra più attributi del nostro set di dati. Di seguito sono riportate alcune tecniche in Python per implementare la visualizzazione multivariata:

Grafico a matrice di correlazione

La correlazione è un'indicazione sui cambiamenti tra due variabili. Nei nostri capitoli precedenti, abbiamo discusso i coefficienti di correlazione di Pearson e anche l'importanza della correlazione. Possiamo tracciare una matrice di correlazione per mostrare quale variabile ha una correlazione alta o bassa rispetto a un'altra variabile.

Esempio

Nel seguente esempio, lo script Python genererà e traccerà una matrice di correlazione per il set di dati Pima Indian Diabetes. Può essere generato con l'aiuto della funzione corr () su Pandas DataFrame e tracciato con l'aiuto di pyplot.

from matplotlib import pyplot
from pandas import read_csv
import numpy
Path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(Path, names=names)
correlations = data.corr()
fig = pyplot.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = numpy.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
pyplot.show()

Produzione

Dall'output precedente della matrice di correlazione, possiamo vedere che è simmetrico, ovvero l'angolo in basso a sinistra è lo stesso in alto a destra. Si osserva inoltre che ogni variabile è positivamente correlata tra loro.

Grafico a matrice a dispersione

I grafici a dispersione mostrano quanto una variabile è influenzata da un'altra o la relazione tra loro con l'aiuto di punti in due dimensioni. I grafici a dispersione sono molto simili ai grafici a linee nel concetto che utilizzano assi orizzontale e verticale per tracciare i punti dati.

Esempio

Nell'esempio seguente, lo script Python genererà e traccerà una matrice Scatter per il set di dati Pima Indian Diabetes. Può essere generato con l'aiuto della funzione scatter_matrix () su Pandas DataFrame e tracciato con l'aiuto di pyplot.

from matplotlib import pyplot
from pandas import read_csv
from pandas.tools.plotting import scatter_matrix
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
scatter_matrix(data)
pyplot.show()

Produzione