当输入是距离矩阵时,均值偏移中的误差

时间:2014-01-02 07:42:22

标签: r cluster-analysis

当我运行以下代码时:

library(fossil)
df    <- data.frame(long,lat)
dist  <- earth.dist(df, dist=F) #calculating distance matrix
library(LPCM)
ms(dist,0.43,scaled=TRUE,iter=100,plotms=1)

我收到错误:

Error in if (th[j] < thresh) { : missing value where TRUE/FALSE needed

我已经通过了运行均值班次聚类所需的所有输入。为什么我收到此错误? 如何告诉ms输入是距离矩阵而不是数据矩阵?

    head(df)
      long      lat
1 116.3313 39.97575
2 116.3315 39.97562
3 116.3319 39.97550
4 116.3321 39.97545
5 116.3324 39.97550
6 116.3327 39.97548

3 个答案:

答案 0 :(得分:0)

试试这个

ms(dist,0.43,scaled=TRUE,iter=100,plotms=1,na.rm=TRUE)  

在错误发生后立即发出命令 traceback()。这将让您弄清楚代码的哪一行导致错误。看看是否有任何遗漏或0,你不希望在那次迭代中。

答案 1 :(得分:0)

由于ms函数似乎无法处理缺失值,因此您必须从数据框中删除它们:

df <- df[apply(df, 1, function(x) !any(is.na(x))),]
dist  <- earth.dist(df, dist=F) #calculating distance matrix
library(LPCM)
ms(dist,0.43,scaled=TRUE,iter=100,plotms=1)

答案 2 :(得分:0)

据我了解平均移位,

Mean-Shift不能与预先计算的距离矩阵

一起使用

因为它需要移动点,并计算距移动位置的距离。你打算怎么预先计算这些距离?

这与k-means基本相同,k-means也需要到距离的距离。