Создание точечных диаграмм с помощью группированных данных
Введение
В данном примере представлено, как создавать точечные диаграммы с использованием сгруппированных выборочных данных. Точечная диаграмма — это простой график зависимости одной переменной от другой.
Функцияscatter создаёт точечные диаграммы. Мы создадим функцию gplotmatrix, которая может создавать матрицу таких графиков, показывающую взаимосвязь между несколькими парами переменных. Для обозначения принадлежности к группе, будут использоваться различные графические символы. Таким образом, будут созданы группированные версии этих графиков. Это полезно для определения того, одинаковы ли значения двух переменных или взаимосвязь между ними в каждой группе.
Исходные данные
Импортируем и присоединим необходимые библиотеки.
import Pkg
Pkg.add(["PlotlyKaleido", "StatsPlots", "DataFrames", "StatsBase", "CSV", "RDatasets", "Statistics", "Random"])
using StatsPlots, DataFrames, StatsBase, CSV, RDatasets, Statistics, Random
plotly()
Предположим, нам необходимо изучить вес и пробег автомобилей трёх различный годов выпуска.
Импортируем и отобразим набор данных об автомобилях.
автомобили = dataset("datasets", "mtcars")
Так как в представленном наборе данных отсутствует информация о годах выпуска, предположим, что это 1970, 1976, и 1982 годы. Добавим эти данные вручную.
n = nrow(автомобили)
наблюдений_в_год = div(n, 3)
годы_выпуска = repeat([1970, 1976, 1982], inner=наблюдений_в_год)
if length(годы_выпуска) < n
append!(годы_выпуска, годы_выпуска[1:(n-length(годы_выпуска))])
end
shuffle!(годы_выпуска)
автомобили[!, :Год_выпуска] = годы_выпуска;
автомобили
Построим точечную диаграмму зависимости расхода топлива от массы автомобилей.
p1 = scatter(автомобили.WT, автомобили.MPG,
group=автомобили.Год_выпуска,
markershape=[:x :o :square],
markercolor=[:blue :green :red],
xlabel="Масса", ylabel="Удельный запас хода",
title="Зависимость расхода топлива от массы",
legend_title="Год выпуска",
legend=:best,
markersize=7)
display(p1)
Функцияscatterсоздаёт точечную диаграмму, на которой каждая группа отображена определённым символом.
Набор данныхавтомобилисодержит другие переменные, описывающие различные характеристики автомобилей. Мы можем изучить несколько из них в одном окне, создав матрицу диаграмм.
Создадим функцию, формирующую данные для отображения матрицы диаграмм.
xvars = [:WT, :Disp, :HP]
yvars = [:MPG, :QSec]
function gplotmatrix(df, xvars, yvars, группа)
nx = length(xvars)
ny = length(yvars)
plt = plot(layout=(ny, nx), size=(800, 600), dpi=150)
xlabels = ["Масса", "Объём двигателя", "Мощность (л.с.)"]
ylabels = ["Удельный запас хода", "Время разгона (сек)"]
for i in 1:ny
for j in 1:nx
subplot_idx = (i-1)*nx + j
цвета = [:blue, :green, :red]
значки = [:x, :o, :square]
обозначения = ["1970", "1976", "1982"]
for (k, grp) in enumerate([1970 1976 1982])
mask = df[!, группа] .== grp
scatter!(df[mask, xvars[j]], df[mask, yvars[i]],
subplot=subplot_idx,
marker=значки[k],
color=цвета[k],
label=обозначения[k],
markersize=6,
alpha=0.7,
legend=(i==1 && j==1) ? :best : false)
end
if i == ny
xlabel!(plt.subplots[subplot_idx], xlabels[j])
end
if j == 1
ylabel!(plt.subplots[subplot_idx], ylabels[i])
end
end
end
return plt
end
И отобразим матрицу диаграмм.
matrix_plot = gplotmatrix(автомобили, xvars, yvars, :Год_выпуска)
display(matrix_plot)
Матрица диаграмм отображает зависимость одних различных параметров от других. Например исходя из верхней левой диаграммы можно сделать обобщение о том, что чем ниже масса автомобиля, тем выше удельный запас хода.
Заключение
Представленный метод визуализации группированных данных является важным инструментом для анализа для статистики и машинного обучения.
Матрица диаграмм позволяет оценить однородность взаимосвязей между переменными в разных группах. Это помогает определить, требуется ли в модель включать эффекты взаимодействия между количественными и категориальными переменными, что критически важно для корректной спецификации статистических моделей.
В машинном обучении такая визуализация помогает выявить групповую структуру данных и несбалансированность классов, что особенно важно для алгоритмов, чувствительных к распределению данных. Она также позволяет выбрать оптимальный уровень сложности модели — от единой глобальной зависимости до раздельного обучения на подгруппах, снижая риск переобучения.
Таким образом, группированные диаграммы служат мостом между первичным анализом данных и построением формальных моделей, способствуя созданию более точных и интерпретируемых решений.