gpt4 book ai didi

r - 如何从 flexclust 生成集群的性能统计信息?

转载 作者:行者123 更新时间:2023-12-04 01:12:26 25 4
gpt4 key购买 nike

在尝试了一些聚类算法后,我使用 flexclust::kcca 在我的数据集上获得了最佳性能。与 family = kccaFamily("angle") .

这是使用 Nclus 的示例数据集来自 flexclust .

library(fpc)
library(flexclust)
data(Nclus)

k <- 4
family <- flexclust::kccaFamily("angle")
model <- flexclust::kcca(Nclus, k, family)

现在我想优化集群的数量。使用 fpc::cluster.stats 似乎可以找到最全面的集群模型性能指标集。 .此函数需要两个输入:距离矩阵和分配的集群。

后者很容易;它只是 model@cluster .

我正在努力为距离矩阵提供什么。 kcca不返回距离对象(或者如果返回,我还没有找到它)。

我想通常我会使用 dist(Nclus) .在这种情况下,我不想要欧几里得距离(或任何其他可用于 dist 的方法)——我想要聚类算法使用的距离度量。我可以重新创建 kcca 使用的距离矩阵使用该函数的代码。
control <- as(list(), "flexclustControl")
centers <- flexclust:::initCenters(Nclus, k, family, control)
distmat <- distAngle(Nclus, centers$centers)

然后我应该能够使用
fpc::cluster.stats(distmat, model@cluster)

问题是这给了我关于距离参数的两个警告。
Warning messages:
1: In as.dist.default(d) : non-square matrix
2: In as.matrix.dist(d) :
number of items to replace is not a multiple of replacement length

这让我怀疑我给了它错误的东西。

我应该如何将距离矩阵传递给 cluster.stats ?

最佳答案

我想你应该使用

distmat <- distAngle(Nclus, Nclus)

但是,我不确定从建模的角度来看这是否有意义:要检查聚类输出的性能,您应该使用更适合您的特定用例的指标;这可能(也可能不是)是 L1 距离:
distmat <- dist(Nclus, "manhattan")

特别是,我猜想最小化“观察与质心/标准化平均值之间的角度”与最小化观察之间的簇内角度不同;我也猜想后一个数量对于建模目的并不是特别有用。换句话说,我将 distAngle 视为识别 k 个集群的替代方法(“技巧”),但我随后会通过其他指标评估识别的集群。希望这对你有意义......

关于r - 如何从 flexclust 生成集群的性能统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38736131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com