【问题标题】:Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)
【发布时间】:2016-07-27 22:48:50
【问题描述】:

我有一个包含数字的数据表(“规范”) - 至少在我所见的范围内 - 以下形式的标准化值:

当我执行时

k <- kmeans(norm,center=3)

我收到以下错误:

Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)

你能帮帮我吗?谢谢!

【问题讨论】:

  • 你检查过你的数据中是否有NaN/NA/Inf吗?您可以使用is.na()is.finite() 函数进行检查
  • 是的,我的文件表中有很多NAs,但我认为这应该不是问题?! is.finite() 返回很多 TRUEs,但也有一些 FALSEs。我该如何解决这个问题?
  • 您必须从数据中删除 NA/Inf/NaN 值。有关详细信息,请参阅“缺失值插补”方法。一种简单的方法是用行/列平均值替换它们。
  • @UjjwalKumar 谢谢!

标签: r machine-learning cluster-analysis data-mining k-means


【解决方案1】:

kmeans 无法处理具有 NA 值的数据。

然后,均值和方差不再明确定义,您不再知道哪个中心最近。

【讨论】:

  • Kmeans 无法处理具有 NA、INF 和 CONTANTS 的数据。
【解决方案2】:

do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)

由于表中存在非数值,也会发生此错误。

【讨论】:

    【解决方案3】:

    所有遇到“do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)”问题的所有人 而不是

    results <- kmeans(iris.features,3)
    results
    

    写下以下内容,请注意 iris 中的大小写你在开始时使用的任何内容

    results <- kmeans(na.omit(irisa.features),3) # this helps in omitting NA 
    results
    

    【讨论】:

      【解决方案4】:

      关于错误说明:

      do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)

      您在上面发布的数据集包含缩放条目,原因一定是您的数据集中有 NA 值,因此通过以下代码省略它们。

      km_cluster <- kmeans(na.omit(MyData), 3)
      km_cluster
      km_cluster$withinss
      km_cluster$tot.withinss/km_cluster$betweenss
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-24
        相关资源
        最近更新 更多