ggplot 中的 Kmean 聚类
Kmean clustering in ggplot
我正在使用 K 均值算法。在 R
中以分隔变量。我想在 ggplot
中绘制我能够管理的结果,
然而 ggplot
和 cluster::clusplot
中的结果似乎不同
所以我想问一下我遗漏了什么:例如我知道缩放比例不同但我想知道 Whz 在使用 clustplot
时所有变量都在范围内并且在使用 ggplot
时不是。
仅仅是因为缩放吗?
那么下面两个结果完全一样吗?
library(cluster)
library(ggfortify)
x <- rbind(matrix(rnorm(2000, sd = 123), ncol = 2),
matrix(rnorm(2000, mean = 800, sd = 123), ncol = 2))
colnames(x) <- c("x", "y")
x <- data.frame(x)
A <- kmeans(x, centers = 3, nstart = 50, iter.max = 500)
cluster::clusplot(cbind(x$x, x$y), A$cluster, color = T, shade = T)
autoplot(kmeans(x, centers = 3, nstart = 50, iter.max = 500), data = x, frame.type = 'norm')
对我来说,我使用 clusplot
或 ggplot
得到相同的图。但是要使用 ggplot
,您必须首先对您的数据进行 PCA
以获得与 clustplot
相同的图。也许这是你遇到问题的地方。
在这里,以你的例子,我做了:
x <- rbind(matrix(rnorm(2000, sd = 123), ncol = 2),
matrix(rnorm(2000, mean = 800, sd = 123), ncol = 2))
colnames(x) <- c("x", "y")
x <- data.frame(x)
A <- kmeans(x, centers = 3, nstart = 50, iter.max = 500)
cluster::clusplot(cbind(x$x, x$y), A$cluster, color = T, shade = T)
pca_x = princomp(x)
x_cluster = data.frame(pca_x$scores,A$cluster)
ggplot(test, aes(x = Comp.1, y = Comp.2, color = as.factor(A.cluster), fill = as.factor(A.cluster))) + geom_point() +
stat_ellipse(type = "t",geom = "polygon",alpha = 0.4)
使用clusplot的情节
以及使用 ggplot 的那个:
希望它能帮助你找出不同情节的原因
我正在使用 K 均值算法。在 R
中以分隔变量。我想在 ggplot
中绘制我能够管理的结果,
然而 ggplot
和 cluster::clusplot
所以我想问一下我遗漏了什么:例如我知道缩放比例不同但我想知道 Whz 在使用 clustplot
时所有变量都在范围内并且在使用 ggplot
时不是。
仅仅是因为缩放吗?
那么下面两个结果完全一样吗?
library(cluster)
library(ggfortify)
x <- rbind(matrix(rnorm(2000, sd = 123), ncol = 2),
matrix(rnorm(2000, mean = 800, sd = 123), ncol = 2))
colnames(x) <- c("x", "y")
x <- data.frame(x)
A <- kmeans(x, centers = 3, nstart = 50, iter.max = 500)
cluster::clusplot(cbind(x$x, x$y), A$cluster, color = T, shade = T)
autoplot(kmeans(x, centers = 3, nstart = 50, iter.max = 500), data = x, frame.type = 'norm')
对我来说,我使用 clusplot
或 ggplot
得到相同的图。但是要使用 ggplot
,您必须首先对您的数据进行 PCA
以获得与 clustplot
相同的图。也许这是你遇到问题的地方。
在这里,以你的例子,我做了:
x <- rbind(matrix(rnorm(2000, sd = 123), ncol = 2),
matrix(rnorm(2000, mean = 800, sd = 123), ncol = 2))
colnames(x) <- c("x", "y")
x <- data.frame(x)
A <- kmeans(x, centers = 3, nstart = 50, iter.max = 500)
cluster::clusplot(cbind(x$x, x$y), A$cluster, color = T, shade = T)
pca_x = princomp(x)
x_cluster = data.frame(pca_x$scores,A$cluster)
ggplot(test, aes(x = Comp.1, y = Comp.2, color = as.factor(A.cluster), fill = as.factor(A.cluster))) + geom_point() +
stat_ellipse(type = "t",geom = "polygon",alpha = 0.4)
使用clusplot的情节
以及使用 ggplot 的那个:
希望它能帮助你找出不同情节的原因