ML - понимание данных с помощью визуализации

Введение

В предыдущей главе мы обсудили важность данных для алгоритмов машинного обучения, а также некоторые рецепты Python для понимания данных со статистикой. Есть еще один способ, называемый визуализацией, для понимания данных.

С помощью визуализации данных мы можем увидеть, как данные выглядят и какая корреляция поддерживается атрибутами данных. Это самый быстрый способ узнать, соответствуют ли функции выходным данным. С помощью следующих рецептов Python мы можем понять данные машинного обучения со статистикой.

Одномерные графики: независимое понимание атрибутов

Самый простой тип визуализации - визуализация с одной переменной или «одномерная» визуализация. С помощью одномерной визуализации мы можем понять каждый атрибут нашего набора данных независимо. Ниже приведены некоторые методы в Python для реализации одномерной визуализации.

Гистограммы

Гистограммы группируют данные по ячейкам и являются самым быстрым способом получить представление о распределении каждого атрибута в наборе данных. Ниже приведены некоторые характеристики гистограмм -

  • Он предоставляет нам подсчет количества наблюдений в каждой ячейке, созданной для визуализации.

  • По форме бункера мы можем легко наблюдать распределение, т. Е. Является ли оно гауссовым, асимметричным или экспоненциальным.

  • Гистограммы также помогают нам увидеть возможные выбросы.

пример

Приведенный ниже код является примером сценария Python, создающего гистограмму атрибутов набора данных Pima Indian Diabetes. Здесь мы будем использовать функцию hist () в Pandas DataFrame для генерации гистограмм иmatplotlib для их построения.

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

Вывод

Приведенный выше вывод показывает, что он создал гистограмму для каждого атрибута в наборе данных. Исходя из этого, мы можем заметить, что, возможно, возраст, педиатрия и тестовые характеристики могут иметь экспоненциальное распределение, в то время как масса и плазма имеют гауссово распределение.

Графики плотности

Еще один быстрый и простой метод получения распределения каждого атрибута - это графики плотности. Это также похоже на гистограмму, но с плавной кривой, проведенной через верх каждой ячейки. Мы можем называть их абстрактными гистограммами.

пример

В следующем примере скрипт Python сгенерирует графики плотности для распределения атрибутов набора данных 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()

Вывод

Из приведенного выше вывода можно легко понять разницу между графиками плотности и гистограммами.

Графики коробок и усов

Диаграммы ящиков и усов, также называемые кратко ящичками, - это еще один полезный метод для анализа распределения каждого атрибута. Ниже приведены характеристики этой техники -

  • Он является одномерным по своей природе и суммирует распределение каждого атрибута.

  • Он рисует линию для среднего значения, т.е. для медианы.

  • Он рисует рамку вокруг 25% и 75%.

  • Он также рисует усы, которые дают нам представление о разбросе данных.

  • Точки за пределами усов означают выбросы. Значения выбросов будут в 1,5 раза больше, чем размер разброса средних данных.

пример

В следующем примере скрипт Python сгенерирует графики плотности для распределения атрибутов набора данных 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()

Вывод

Из приведенного выше графика распределения атрибутов можно заметить, что возраст, тест и кожа кажутся смещенными в сторону меньших значений.

Многомерные графики: взаимодействие нескольких переменных

Другой тип визуализации - это многомерная или «многомерная» визуализация. С помощью многомерной визуализации мы можем понять взаимодействие между несколькими атрибутами нашего набора данных. Ниже приведены некоторые методы в Python для реализации многомерной визуализации.

График корреляционной матрицы

Корреляция - это показатель изменений между двумя переменными. В наших предыдущих главах мы обсуждали коэффициенты корреляции Пирсона, а также важность корреляции. Мы можем построить матрицу корреляции, чтобы показать, какая переменная имеет высокую или низкую корреляцию по отношению к другой переменной.

пример

В следующем примере скрипт Python сгенерирует и построит корреляционную матрицу для набора данных Pima Indian Diabetes. Его можно сгенерировать с помощью функции corr () в Pandas DataFrame и построить с помощью 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()

Вывод

Из вышеприведенного вывода корреляционной матрицы мы видим, что она симметрична, т.е. нижний левый угол совпадает с верхним правым. Также наблюдается, что каждая переменная положительно коррелирует друг с другом.

График матрицы рассеяния

Диаграммы разброса показывают, насколько одна переменная зависит от другой или взаимосвязь между ними, с помощью точек в двух измерениях. Точечные диаграммы очень похожи на линейные графики в том смысле, что они используют горизонтальные и вертикальные оси для построения точек данных.

пример

В следующем примере скрипт Python сгенерирует и построит матрицу разброса для набора данных Pima Indian Diabetes. Его можно сгенерировать с помощью функции scatter_matrix () в Pandas DataFrame и построить с помощью 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()

Вывод