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