本文介绍了计算R中群集之间的平方和总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标是比较我使用过的两种聚类方法cluster_method_1cluster_method_2中的哪一种在聚类平方和之间最大,以便确定哪种方法实现了更好的分离。

我基本上是在寻找一种有效的方法来计算群集1的每个点与群集2、3、4的所有点之间的距离,依此类推。

示例数据帧:

structure(list(x1 = c(0.01762376, -1.147739752, 1.073605848,
2.000420899, 0.01762376, 0.944438811, 2.000420899, 0.01762376,
-1.147739752, -1.147739752), x2 = c(0.536193126, 0.885609849,
-0.944699546, -2.242627057, -1.809984553, 1.834120637, 0.885609849,
0.96883563, 0.186776403, -0.678508604), x3 = c(0.64707104, -0.603759684,
-0.603759684, -0.603759684, -0.603759684, 0.64707104, -0.603759684,
-0.603759684, -0.603759684, 1.617857394), x4 = c(-0.72712328,
0.72730861, 0.72730861, -0.72712328, -0.72712328, 0.72730861,
0.72730861, -0.72712328, -0.72712328, -0.72712328), cluster_method_1 = structure(c(1L,
3L, 3L, 3L, 2L, 2L, 3L, 2L, 1L, 4L), .Label = c("1", "2", "4",
"6"), class = "factor"), cluster_method_2 = structure(c(5L, 3L,
1L, 3L, 4L, 2L, 1L, 1L, 1L, 6L), .Label = c("1", "2", "3", "4",
"5", "6"), class = "factor")), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))



        x1     x2     x3     x4 cluster_method_1 cluster_method_2
     <dbl>  <dbl>  <dbl>  <dbl> <fct>            <fct>
 1  0.0176  0.536  0.647 -0.727 1                5
 2 -1.15    0.886 -0.604  0.727 4                3
 3  1.07   -0.945 -0.604  0.727 4                1
 4  2.00   -2.24  -0.604 -0.727 4                3
 5  0.0176 -1.81  -0.604 -0.727 2                4
 6  0.944   1.83   0.647  0.727 2                2
 7  2.00    0.886 -0.604  0.727 4                1
 8  0.0176  0.969 -0.604 -0.727 2                1
 9 -1.15    0.187 -0.604 -0.727 1                1
10 -1.15   -0.679  1.62  -0.727 6                6

推荐答案

平方和SUM_x SUM_y||x-y||²是常量。

可以根据方差计算平方和的总和。

如果您现在减去x和y属于同一群集的群集内平方和,则保留群集间平方和。

如果执行此方法,则需要O(N)时间,而不是O(n²)。

推论:具有最小WCSS的解决方案具有最大的BCSS。

这篇关于计算R中群集之间的平方和总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-21 09:50