我在 L2 归一化特征矩阵上使用带有 'Distance'、'cosine'、'EmptyAction'、'drop' 的 Matlab 常规 kmeans 算法,但我遇到了问题。Matlab 生成的输出只是将每个数据点分配给 cluster 1.00000
,即使 k=20,并且 C 中的所有质心都是NaN
。有没有人对可能导致这种情况的原因有任何建议?
矩阵的布局为 ([0,1,...,1,0,1],[...],[0,1,...,1,0,1])。numpy.linalg.norm
在将文件传递给 Matlab 之前,我已经使用 Python 完成了 L2 标准化。这是我运行kmeans的确切方式:
m=importdata('matrix.txt');
data=m'; % transpose, because kmeans treats columns as features instead of rows
[L, C]=kmeans(data, 20, 'Distance', 'cosine', 'EmptyAction', 'drop')
这是我的标准化数据集的示例:
10.3440804328
12.6885775404
15.5884572681
15.9059737206
17.4355957742
17.0
17.3493515729
17.3205080757
18.6279360102
19.7230829233
21.400934559
22.0
22.5831795813
23.0
24.0416305603
25.2388589282
26.8141753556
22.5388553392
9.2736184955
13.5277492585
15.2970585408
任何帮助或建议将不胜感激。如果您需要更多信息,请告诉我!