R K-均值聚类方法
我正试图在R K-均值聚类方法,r,k-means,R,K Means,我正试图在R中生成集群方式的合适图形显示 如何将属性放置在x轴上,并将每个簇的均值视为项目的轨迹 所有数据都是连续的。以下方法如何:由于变量处于类似的测量尺度(如Likert尺度),您可以显示每个簇内每个变量的分布(如箱线图),并通过使用每个簇上相同的轴限制,直观地比较其分布 这可以通过将数据放入适当的格式并使用ggplot2包生成绘图来实现。如下所示 步骤1:生成模拟数据以模拟您拥有的数字数据 生成的数据包含四个非负整数变量和一个包含3个簇的簇变量 library(ggplot2)
R
中生成集群方式的合适图形显示
如何将属性放置在x轴上
,并将每个簇的均值
视为项目的轨迹
所有数据都是连续的。以下方法如何:由于变量处于类似的测量尺度(如Likert尺度),您可以显示每个簇内每个变量的分布(如箱线图),并通过使用每个簇上相同的轴限制,直观地比较其分布 这可以通过将数据放入适当的格式并使用
ggplot2
包生成绘图来实现。如下所示
步骤1:生成模拟数据以模拟您拥有的数字数据
生成的数据包含四个非负整数变量和一个包含3个簇的簇变量
library(ggplot2)
set.seed(1717) # make the simulated data repeatable
N = 100
nclusters = 3
cluster = as.numeric( cut(rnorm(N), breaks=nclusters, label=seq_len(nclusters)) )
df = data.frame(cluster=cluster,
x1=floor(cluster + runif(N)*5),
x2=floor(runif(N)*5),
x3=floor((nclusters-cluster) + runif(N)*5),
x4=floor(cluster + runif(N)*5))
df$cluster = factor(df$cluster) # define cluster as factor to ease plotting code below
tail(df)
table(df$cluster)
其输出为:
cluster x1 x2 x3 x4
95 2 5 2 5 2
96 3 5 4 0 3
97 3 3 3 1 7
98 2 5 4 3 3
99 3 6 1 1 7
100 3 5 1 2 5
1 2 3
15 64 21
cluster var value id
1.x1 1 x1 5 1
2.x1 1 x1 3 2
3.x1 3 x1 5 3
4.x1 1 x1 1 4
5.x1 2 x1 3 5
6.x1 1 x1 2 6
1 2 3
60 256 84
i、 例如,在100个模拟案例中,数据包含集群1中的15个案例、集群2中的64个案例和集群3中的21个案例
步骤2:准备用于打印的数据
在这里,我们使用stats
包中的reformate()
将数据集从宽到长进行转换,以便将四个数值变量(x1
,x2
,x3
,x4
)放在一列中,适用于为四个变量中的每一个生成箱线图,然后根据集群变量进行分组
vars2transpose = c("x1", "x2","x3", "x4")
df.long = reshape(df, direction="long", idvar="id",
varying=list(vars2transpose),
timevar="var", times=vars2transpose, v.names="value")
head(df.long)
table(df.long$cluster)
其输出为:
cluster x1 x2 x3 x4
95 2 5 2 5 2
96 3 5 4 0 3
97 3 3 3 1 7
98 2 5 4 3 3
99 3 6 1 1 7
100 3 5 1 2 5
1 2 3
15 64 21
cluster var value id
1.x1 1 x1 5 1
2.x1 1 x1 3 2
3.x1 3 x1 5 3
4.x1 1 x1 1 4
5.x1 2 x1 3 5
6.x1 1 x1 2 6
1 2 3
60 256 84
请注意,由于数据现在是转置的长格式,每个集群中的案例数量增加了4倍(即数字变量的数量)
步骤3:使用线连接方式通过集群创建变量的箱线图
我们绘制每个变量x1
,x2
,x3
,x4
的水平箱线图,显示它们在每个簇中的分布,并用连接的红色十字标记平均值(您所追踪的轨迹)
什么是轨迹?欢迎来到SO!请添加一些数据、代码和所需结果的清晰模型,以获得帮助。我创建了4个K-means群集,现在我正试图找到一种方法来显示群集平均值,并显示每个群集中使用的属性。这只是我想到的一个想法,但我确信这是否是一个合适的想法。