ML - Zrozumienie danych za pomocą wizualizacji

Wprowadzenie

W poprzednim rozdziale omówiliśmy znaczenie danych dla algorytmów uczenia maszynowego wraz z niektórymi regułami języka Python w celu zrozumienia danych ze statystykami. Istnieje inny sposób, zwany wizualizacją, służący do zrozumienia danych.

Za pomocą wizualizacji danych możemy zobaczyć, jak wyglądają dane i jaki rodzaj korelacji posiadają atrybuty danych. Jest to najszybszy sposób sprawdzenia, czy funkcje odpowiadają wynikowi. Korzystając z przepisów Pythona, możemy zrozumieć dane ML ze statystykami.

Wykresy jednowymiarowe: niezależne zrozumienie atrybutów

Najprostszym typem wizualizacji jest wizualizacja z jedną zmienną lub „jednowymiarowa”. Przy pomocy wizualizacji jednowymiarowej możemy niezależnie zrozumieć każdy atrybut naszego zbioru danych. Poniżej przedstawiono niektóre techniki w Pythonie do implementacji wizualizacji jednowymiarowej -

Histogramy

Histogramy grupują dane w koszach i są najszybszym sposobem na uzyskanie informacji o rozmieszczeniu każdego atrybutu w zbiorze danych. Oto niektóre cechy charakterystyczne histogramów -

  • Zapewnia nam liczbę obserwacji w każdym koszu utworzonym do wizualizacji.

  • Z kształtu kosza można łatwo obserwować rozkład, czyli pogodę jest to gaussowskie, skośne lub wykładnicze.

  • Histogramy pomagają nam również dostrzec możliwe wartości odstające.

Przykład

Poniższy kod jest przykładem skryptu w Pythonie tworzącego histogram atrybutów zbioru danych Pima Indian Diabetes. Tutaj będziemy używać funkcji hist () na Pandas DataFrame do generowania histogramów imatplotlib za spiskowanie ich.

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

Wynik

Powyższe dane wyjściowe pokazują, że utworzył histogram dla każdego atrybutu w zestawie danych. Z tego możemy zauważyć, że być może wiek, pedi i atrybut testowy mogą mieć rozkład wykładniczy, podczas gdy masa i plazma mają rozkład Gaussa.

Wykresy gęstości

Inną szybką i łatwą techniką uzyskania rozkładu poszczególnych atrybutów są wykresy gęstości. Jest również podobny do histogramu, ale ma gładką krzywą narysowaną przez górę każdego pojemnika. Możemy je nazwać abstrakcyjnymi histogramami.

Przykład

W poniższym przykładzie skrypt w języku Python wygeneruje wykresy gęstości dla dystrybucji atrybutów zestawu danych 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()

Wynik

Z powyższego wyniku można łatwo zrozumieć różnicę między wykresami gęstości a histogramami.

Wykresy pudełkowe i wąsy

Wykresy pudełkowe i wąsy, w skrócie zwane również wykresami pudełkowymi, to kolejna przydatna technika przeglądania rozkładu każdego atrybutu. Poniżej przedstawiono cechy tej techniki -

  • Ma charakter jednozmiennowy i podsumowuje rozkład każdego atrybutu.

  • Rysuje linię dla wartości środkowej, tj. Dla mediany.

  • Rysuje prostokąt wokół 25% i 75%.

  • Rysuje również wąsy, które dają wyobrażenie o rozprzestrzenianiu się danych.

  • Kropki poza wąsami oznaczają wartości odstające. Wartości odstające byłyby 1,5 raza większe niż rozmiar rozprzestrzeniania się średnich danych.

Przykład

W poniższym przykładzie skrypt w języku Python wygeneruje wykresy gęstości dla dystrybucji atrybutów zestawu danych 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()

Wynik

Z powyższego wykresu rozkładu atrybutu można zauważyć, że wiek, test i skóra wydają się być pochylone w kierunku mniejszych wartości.

Wykresy wielowymiarowe: interakcja między wieloma zmiennymi

Innym rodzajem wizualizacji jest wizualizacja z wieloma zmiennymi lub „wielowymiarowymi”. Przy pomocy wizualizacji wielowymiarowej możemy zrozumieć interakcje między wieloma atrybutami naszego zbioru danych. Poniżej przedstawiono niektóre techniki w Pythonie do implementacji wizualizacji wielowymiarowej -

Wykres macierzy korelacji

Korelacja jest wskazówką dotyczącą zmian między dwiema zmiennymi. W naszych poprzednich rozdziałach omówiliśmy współczynniki korelacji Pearsona i znaczenie korelacji. Możemy wykreślić macierz korelacji, aby pokazać, która zmienna ma wysoką lub niską korelację w odniesieniu do innej zmiennej.

Przykład

W poniższym przykładzie skrypt w języku Python wygeneruje i wykreśli macierz korelacji dla zestawu danych Pima Indian Diabetes. Można go wygenerować za pomocą funkcji corr () w Pandas DataFrame i wykreślić za pomocą 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()

Wynik

Z powyższego wyniku macierzy korelacji widzimy, że jest symetryczna, tj. Lewy dolny róg jest taki sam, jak prawy górny. Obserwuje się również, że każda zmienna jest ze sobą dodatnio skorelowana.

Wykres macierzy punktowej

Wykresy punktowe pokazują, jak bardzo na jedną zmienną wpływa inna lub na relacje między nimi za pomocą kropek w dwóch wymiarach. Wykresy punktowe są bardzo podobne do wykresów liniowych, ponieważ wykorzystują osie poziome i pionowe do wykreślania punktów danych.

Przykład

W poniższym przykładzie skrypt w języku Python wygeneruje i wykreśli macierz punktową dla zestawu danych Pima Indian Diabetes. Można go wygenerować za pomocą funkcji scatter_matrix () w Pandas DataFrame i wykreślić za pomocą 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()

Wynik