gpt4 book ai didi

python - Matlab k-means cosine 将所有内容分配给一个簇

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:48 24 4
gpt4 key购买 nike

我在 L2 归一化特征矩阵上使用 Matlab 的常规 kmeans 算法和“Distance”、“cosine”、“EmptyAction”、“drop”,但遇到了问题。 Matlab 生成的输出只是将每个数据点分配给集群 1.00000,即使 k=20,并且 C 中的所有质心都是 NaN。有人对可能导致此问题的原因有任何建议吗?

矩阵的布局为([0,1,...,1,0,1],[...],[0,1,...,1,0,1])。在将文件传递给 Matlab 之前,我已经使用 Python 的 numpy.linalg.norm 完成了 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

任何帮助或建议将不胜感激。如果您需要更多信息,请告诉我!

最佳答案

余弦距离导致它失败,它与 sqEuclidean 一起使用。我认为余弦距离需要更多信息,否则对您的数据集没有意义。

编辑:我同意你的观点,文档在这里有点模糊......但是Matlab的pdist函数中余弦距离的定义是:“一减去点之间夹角的余弦(视为向量) )。”

我认为,必须包括角度(我假设在下一栏中)。但这似乎违背了目的。 cosine similarity再次编辑:我想include更有可能意味着“两个向量之间的夹角”。在这种情况下,我认为余弦需要 2 个或更多列来工作。

此外,如果您已经喜欢 Python,那里也有一些很好的机器学习工具。这是one I have used 。还有MILK ,但我自己从来没有用过。

关于python - Matlab k-means cosine 将所有内容分配给一个簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10503193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com