标签: matlab k-means
我有一个1750乘1750矩阵Y。我想用k-means将它聚类成50个簇。我的代码是:
Y
[idx,C] = kmeans(Y,50)
但是,我一直收到错误:
使用kmeans时出错(第243行) X必须有比行数更多的行。
为什么呢?发生了什么事?
我缩小了矩阵的大小,通过反复试验,我发现错误直到矩阵大小为317×317才显示。除此之外,从318乘318以上,它开始抛出错误。
答案 0 :(得分:0)
检查您的数据矩阵Y是否没有任何仅包含NaN值的列。您可以从第318列开始,因为您知道它的包含会导致错误。使用isnan和all:
NaN
isnan
all
all(isnan(Y(:,318))
您可以通过以下方式检查输入数据矩阵的所有列:
find(all(isNaN(Y)))
将返回所有NaN列的索引。