Перейти к содержимому

Визуализация

Раздел будет описывать построение графиков с помощью PlotML: диаграммы рассеяния, матрицы попарных графиков и визуальную проверку данных.

PlotML умеет строить графики непосредственно по данным из Dataset и DataFrame. Один и тот же график можно добавить в текущее окно через Plot, построить методом самого набора данных или разместить в выбранной ячейке Figure.

В приведённых ниже фрагментах предполагается, что подключены модули MLABC и PlotML, а переменные ds, df, fig и mnist уже созданы.

// Диаграмма рассеяния
Plot.Points(ds, 'Вес', 'Рост');
Plot.Points(ds, 'Вес', 'Рост',
classColumn := ds.Target);
ds.Points('Вес', 'Рост');
ds.Points('Вес', 'Рост',
classColumn := ds.Target);
fig[0, 0].Points(ds, 'Вес', 'Рост',
classColumn := ds.Target);
// Линейный график
Plot.LineGraph(ds, 'Год', 'Цена');
ds.LineGraph('Год', 'Цена');
fig[0, 1].LineGraph(ds, 'Год', 'Цена');
// Гистограмма
Plot.Hist(ds, 'Возраст',
bins := 10);
ds.Hist('Возраст',
bins := 10);
fig[0, 2].Hist(ds, 'Возраст',
bins := 10);
// Несколько гистограмм
Plot.HistMany(ds);
Plot.HistMany(ds,
columns := ['Вес', 'Рост', 'Возраст'],
bins := 10);
ds.HistMany;
ds.HistMany(
columns := ['Вес', 'Рост'],
bins := 10);
fig[0, 3].HistMany(ds,
columns := ['Вес', 'Рост']);
// Столбчатая диаграмма
Plot.Bar(ds, 'Количество');
Plot.Bar(ds, 'Год', 'Количество');
ds.Bar('Количество');
ds.Bar('Год', 'Количество');
fig[1, 0].Bar(ds, 'Год', 'Количество');
// Горизонтальная столбчатая диаграмма
Plot.HorizontalBar(ds,
'Категория', 'Количество');
ds.HorizontalBar(
'Категория', 'Количество');
fig[1, 1].HorizontalBar(ds,
'Категория', 'Количество');
// Тепловая карта
Plot.Heatmap(ds);
Plot.Heatmap(ds,
columns := ['Вес', 'Рост', 'Возраст']);
ds.Heatmap;
ds.Heatmap(
columns := ['Вес', 'Рост']);
fig[1, 2].Heatmap(ds,
columns := ['Вес', 'Рост']);
// Матрица попарных диаграмм
Plot.PairPlot(ds);
Plot.PairPlot(ds,
columns := ['Вес', 'Рост', 'Возраст']);
Plot.PairPlot(ds,
columns := ['Вес', 'Рост'],
colorByTarget := False);
Plot.PairPlot(ds,
columns := ['Вес', 'Рост'],
colorColumn := 'Цена');
ds.PairPlot;
ds.PairPlot(
columns := ['Вес', 'Рост']);
// Одно изображение
Plot.Image(mnist, 28, 28,
row := 10,
invert := True);
mnist.Image(28, 28,
row := 10,
invert := True);
fig[1, 3].Image(mnist, 28, 28,
row := 10,
invert := True);
// Сетка изображений
Plot.ImageGrid(mnist, 28, 28,
startRow := 100,
count := 20,
cols := 5,
spacing := 0.1,
invert := True);
mnist.ImageGrid(28, 28,
count := 20,
cols := 5,
invert := True);
fig[1, 4].ImageGrid(mnist, 28, 28,
count := 20,
cols := 5,
invert := True);

У Dataset имеются сведения о признаках и целевом столбце. Поэтому в соответствующих методах можно использовать ds.Target и не извлекать таблицу ds.Data отдельно.

Для DataFrame нужные столбцы задаются непосредственно их именами.

// Диаграмма рассеяния
Plot.Points(df, 'Вес', 'Рост');
Plot.Points(df, 'Вес', 'Рост', 'Порода');
df.Points('Вес', 'Рост');
df.Points('Вес', 'Рост', 'Порода');
fig[0, 0].Points(df, 'Вес', 'Рост', 'Порода');
// Линейный график
Plot.LineGraph(df, 'Год', 'Цена');
df.LineGraph('Год', 'Цена');
fig[0, 1].LineGraph(df, 'Год', 'Цена');
// Гистограмма
Plot.Hist(df, 'Возраст', bins := 10);
df.Hist('Возраст', bins := 10);
fig[0, 2].Hist(df, 'Возраст', bins := 10);
// Несколько гистограмм
Plot.HistMany(df,
['Вес', 'Рост', 'Возраст'],
bins := 10);
df.HistMany(
['Вес', 'Рост'],
bins := 10);
fig[0, 3].HistMany(df,
['Вес', 'Рост']);
// Столбчатая диаграмма
Plot.Bar(df, 'Количество');
Plot.Bar(df, 'Год', 'Количество');
df.Bar('Количество');
df.Bar('Год', 'Количество');
fig[1, 0].Bar(df, 'Год', 'Количество');
// Горизонтальная столбчатая диаграмма
Plot.HorizontalBar(df,
'Категория', 'Количество');
df.HorizontalBar(
'Категория', 'Количество');
fig[1, 1].HorizontalBar(df,
'Категория', 'Количество');
// Тепловая карта
Plot.Heatmap(df,
['Вес', 'Рост', 'Возраст']);
df.Heatmap(
['Вес', 'Рост']);
fig[1, 2].Heatmap(df,
['Вес', 'Рост']);
// Матрица попарных диаграмм
Plot.PairPlot(df,
['Вес', 'Рост', 'Возраст']);
Plot.PairPlot(df,
['Вес', 'Рост'],
'Цена');
df.PairPlot(
['Вес', 'Рост', 'Возраст']);
df.PairPlot(
['Вес', 'Рост'],
'Цена');