ML - Comprendre les données avec la visualisation

introduction

Dans le chapitre précédent, nous avons discuté de l'importance des données pour les algorithmes d'apprentissage automatique ainsi que de certaines recettes Python pour comprendre les données avec des statistiques. Il existe un autre moyen appelé Visualisation, pour comprendre les données.

À l'aide de la visualisation des données, nous pouvons voir à quoi ressemblent les données et quel type de corrélation est détenu par les attributs des données. C'est le moyen le plus rapide de voir si les fonctionnalités correspondent à la sortie. Avec l'aide des recettes Python suivantes, nous pouvons comprendre les données ML avec des statistiques.

Graphiques univariés: comprendre les attributs indépendamment

Le type de visualisation le plus simple est la visualisation à variable unique ou «univariée». Avec l'aide de la visualisation univariée, nous pouvons comprendre chaque attribut de notre ensemble de données indépendamment. Voici quelques techniques en Python pour implémenter la visualisation univariée -

Histogrammes

Les histogrammes regroupent les données dans des bacs et constituent le moyen le plus rapide de se faire une idée de la distribution de chaque attribut dans l'ensemble de données. Voici quelques-unes des caractéristiques des histogrammes -

  • Il nous fournit un décompte du nombre d'observations dans chaque bac créé pour la visualisation.

  • A partir de la forme du bac, on peut facilement observer la distribution c'est-à-dire qu'il est gaussien, asymétrique ou exponentiel.

  • Les histogrammes nous aident également à voir les valeurs aberrantes possibles.

Exemple

Le code ci-dessous est un exemple de script Python créant l'histogramme des attributs de l'ensemble de données Pima Indian Diabetes. Ici, nous utiliserons la fonction hist () sur Pandas DataFrame pour générer des histogrammes etmatplotlib pour les tracer.

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()

Production

La sortie ci-dessus montre qu'elle a créé l'histogramme pour chaque attribut de l'ensemble de données. À partir de là, nous pouvons observer que peut-être l'âge, le pedi et l'attribut de test peuvent avoir une distribution exponentielle tandis que la masse et les plas ont une distribution gaussienne.

Tracés de densité

Les graphiques de densité sont une autre technique simple et rapide pour obtenir chaque distribution d'attributs. C'est aussi comme un histogramme mais avec une courbe lisse dessinée à travers le haut de chaque bac. Nous pouvons les appeler des histogrammes abstraits.

Exemple

Dans l'exemple suivant, le script Python générera des diagrammes de densité pour la distribution des attributs de l'ensemble de données 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()

Production

À partir de la sortie ci-dessus, la différence entre les graphiques de densité et les histogrammes peut être facilement comprise.

Tracés en boîte et moustaches

Les diagrammes en boîte et en moustache, également appelés boîtes à moustaches, sont une autre technique utile pour examiner la distribution de la distribution de chaque attribut. Voici les caractéristiques de cette technique -

  • Il est de nature univariée et résume la distribution de chaque attribut.

  • Il trace une ligne pour la valeur médiane, c'est-à-dire pour la médiane.

  • Il dessine une boîte autour des 25% et 75%.

  • Il dessine également des moustaches qui nous donneront une idée de la diffusion des données.

  • Les points à l'extérieur des moustaches indiquent les valeurs aberrantes. Les valeurs aberrantes seraient 1,5 fois supérieures à la taille de la dispersion des données intermédiaires.

Exemple

Dans l'exemple suivant, le script Python générera des diagrammes de densité pour la distribution des attributs de l'ensemble de données 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()

Production

À partir du graphique ci-dessus de la distribution des attributs, on peut observer que l'âge, le test et la peau semblent biaisés vers des valeurs plus petites.

Graphiques multivariés: interaction entre plusieurs variables

Un autre type de visualisation est la visualisation à plusieurs variables ou «multivariée». À l'aide de la visualisation multivariée, nous pouvons comprendre l'interaction entre plusieurs attributs de notre ensemble de données. Voici quelques techniques en Python pour implémenter la visualisation multivariée -

Diagramme de matrice de corrélation

La corrélation est une indication des changements entre deux variables. Dans nos chapitres précédents, nous avons discuté des coefficients de corrélation de Pearson et de l'importance de la corrélation également. Nous pouvons tracer une matrice de corrélation pour montrer quelle variable a une corrélation élevée ou faible par rapport à une autre variable.

Exemple

Dans l'exemple suivant, le script Python générera et tracera une matrice de corrélation pour l'ensemble de données Pima Indian Diabetes. Il peut être généré à l'aide de la fonction corr () sur Pandas DataFrame et tracé à l'aide de 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()

Production

À partir de la sortie ci-dessus de la matrice de corrélation, nous pouvons voir qu'elle est symétrique, c'est-à-dire que la partie inférieure gauche est la même que la partie supérieure droite. On observe également que chaque variable est positivement corrélée entre elles.

Diagramme de matrice de dispersion

Les nuages ​​de points montrent dans quelle mesure une variable est affectée par une autre ou la relation entre elles à l'aide de points en deux dimensions. Les nuages ​​de points ressemblent beaucoup aux graphiques linéaires dans la mesure où ils utilisent des axes horizontaux et verticaux pour tracer des points de données.

Exemple

Dans l'exemple suivant, le script Python générera et tracera la matrice Scatter pour l'ensemble de données Pima Indian Diabetes. Il peut être généré à l'aide de la fonction scatter_matrix () sur Pandas DataFrame et tracé à l'aide de 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()

Production