使用分组数据创建点图
导言
此示例演示如何使用分组样本数据创建散点图。 散点图是一个变量如何依赖于另一个变量的简单图形。
功能scatter 创建点图。 我们将创建一个函数 gplotmatrix,从而可以创建显示几对变量之间关系的这种图形的矩阵。 各种图形符号将用于指示组中的成员资格。 这样,将创建这些图形的分组版本。 这对于确定两个变量的值是否相同或它们在每个组中的关系很有用。
初始数据
我们将导入并附加必要的库。
In [ ]:
import Pkg
Pkg.add(["PlotlyKaleido", "StatsPlots", "DataFrames", "StatsBase", "CSV", "RDatasets", "Statistics", "Random"])
using StatsPlots, DataFrames, StatsBase, CSV, RDatasets, Statistics, Random
plotly()
假设我们需要研究三个不同年份制造的汽车的重量和里程。
导入和显示有关汽车的数据集。
In [ ]:
автомобили = dataset("datasets", "mtcars")
Out[0]:
由于呈现的数据集中没有关于发布年份的信息,因此我们假设这些是1970年、1976年和1982年。 我们将手动添加此数据。
In [ ]:
n = nrow(автомобили)
наблюдений_в_год = div(n, 3)
годы_выпуска = repeat([1970, 1976, 1982], inner=наблюдений_в_год)
if length(годы_выпуска) < n
append!(годы_выпуска, годы_выпуска[1:(n-length(годы_выпуска))])
end
shuffle!(годы_выпуска)
автомобили[!, :Год_выпуска] = годы_выпуска;
автомобили
Out[0]:
让我们建立燃料消耗对汽车质量的依赖性的点图。
In [ ]:
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创建散点图,其中每个组由特定符号表示。
数据集автомобили它包含描述汽车各种特性的其他变量。 我们可以通过创建图表矩阵在一个窗口中探索其中的几个。
让我们创建一个生成数据以显示图表矩阵的函数。
In [ ]:
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
Out[0]:
我们将显示一个图表矩阵。
In [ ]:
matrix_plot = gplotmatrix(автомобили, xvars, yvars, :Год_выпуска)
display(matrix_plot)
图表矩阵显示了一些不同参数对其他参数的依赖性。 例如,根据左上图,我们可以概括地说,汽车的质量越低,比动力储备越高。
结论
所提出的分组数据可视化方法是统计和机器学习分析的重要工具。
图表矩阵允许您评估不同组中变量之间关系的一致性。 这有助于确定模型是否需要包括定量变量和类别变量之间相互作用的影响,这对于正确规范统计模型至关重要。
在机器学习中,这种可视化有助于识别数据的组结构和类的不平衡,这对于对数据分布敏感的算法尤为重要。 它还允许您选择模型的最佳复杂程度-从单个全局依赖到子组中的单独训练,从而降低过度拟合的风险。
因此,分组图作为初级数据分析和形式化模型构建之间的桥梁,有助于创建更准确和解释的解决方案。