使用NaN在矩阵上运行kmeans函数?

时间:2012-04-29 00:28:04

标签: matlab nan k-means

我有一个161,1911的数据矩阵为0,1,2,然后在整个矩阵中有一些NaN。我尝试在数据上运行内置函数kmeans,每当我的K(簇数)值大于5时,它返回

Warning: Ignoring rows of X with missing data. 
> In kmeans at 128
??? Error using ==> kmeans at 284
X must have more rows than the number of clusters.

有解决方法吗?我想只有5行没有任何NaN。

2 个答案:

答案 0 :(得分:4)

这个问题的核心超越了关于NaN s的简单编程问题。这是一个关于在存在缺失数据的情况下进行聚类的更基本的问题。

以下是一些链接,显示了在这些情况下做什么的示例。哪种方法最好取决于您的具体情况。

  1. Paper showing nearly exactly what you want to do.
  2. Code projects on Google code
  3. Another paper in an IEEE Journal

答案 1 :(得分:1)

如果你想使用K-Means,你将不得不将数字放在那些非数字的地方。一种方法是,对于每列,取非NaN值的平均值,并用该值替换该列中的NaN。