问题标签 [k-means]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
32162 浏览

algorithm - 如何实现 K-Means++ 算法?

我无法完全理解K-Means++ 算法。我对如何选择第一个k质心很感兴趣,即初始化,其余部分就像原始K-Means 算法一样。

  1. 使用的概率函数是基于距离还是高斯?
  2. 同时,选择最远的点(从其他质心)作为新质心。

我将欣赏一步一步的解释和一个例子。维基百科中的那个不够清楚。还有一个很好注释的源代码也会有所帮助。如果您使用 6 个阵列,请告诉我们哪个阵列用于什么用途。

0 投票
1 回答
2113 浏览

python - OpenCV KMeans (K-Means) python 输出簇数问题

我正在使用 OpenCV 的 python 接口对多维数据(通常为 7 维)进行 K-Means 聚类。我得到了集群的奇怪结果。当请求 n 个集群(索引 0 到 n)时,一些集群没有分配给它们的点 - 这导致集群少于预期。有人成功使用了 OpenCV 的 python K-Means 实现吗?一些用户体验或建议将是最有帮助的。

这是我的python实现的代码片段:

问候,

斯特凡

0 投票
8 回答
101333 浏览

python - 是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

0 投票
1 回答
88 浏览

algorithm - 应该选择哪种算法来完成这个任务

嗨,我是Cluster的新手,我不知道哪种算法适合我的任务。让我描述一下我的任务:

  1. 首先,给定一组点以及它们之间的距离
  2. 根据距离将它们聚类成几个聚类。
  3. 将添加一些新点,所有点之间的距离也会给出。
  4. 重复 2

例如,首先我们有以下矩阵

聚类后​​,我们添加一个新点,距离也给出:

这里的问题是速度,我希望集群是增量集群,即后面的集群可以利用以前的结果。因为我们会经常添加点(如果我们找到一个),如果我们每次都重新聚类点。即使集群本身有O(n),集群的总时间也会是O(n^2)。

有什么建议吗?

谢谢

0 投票
1 回答
1334 浏览

hadoop - 在 hadoop 集群上部署 Mahout

我想在 5 台机器的 hadoop 集群中运行 Mahout 的 K-Means 示例。我应该在所有节点中保留哪些 Mahout jar 文件,以便 K-Means 以分布式方式执行。谢谢。

-文基拉姆

0 投票
1 回答
525 浏览

r - 在 R 中,kmeans() 和 kmeansCBI() 有什么区别?

kmeans()我从我的数据集上kmeansCBI()fps包中都试过了。

但是,它们给出了不同的SSE值,所以我不知道哪个是正确的值。

例如,对于 700*5 的数据,kmeans()给我大约 33000 作为 SSE,但kmeansCBI()给我 120 作为 SSE。

我应该使用什么值?

谢谢。

0 投票
3 回答
27559 浏览

r - R - 'princomp' 只能用于比变量更多的单位

我正在使用 R 软件(R 指挥官)对我的数据进行聚类。我有一个较小的数据子集,包含 200 行和大约 800 列。尝试 kmeans 聚类并在图表上绘图时出现以下错误。“'princomp' 只能用于比变量更多的单位”

然后,我创建了一个 10 行和 10 列的测试文档,它的绘图很好,但是当我添加一个额外的列时,我再次遇到错误。为什么是这样?我需要能够绘制我的集群。当我在对其执行 kmeans 后查看我的数据集时,我可以看到额外的结果列,其中显示了它们属于哪些集群。

有什么我做错了吗,我可以摆脱这个错误并绘制更大的样本吗???请帮助,已经破坏了我一个星期的头。多谢你们。

0 投票
3 回答
7138 浏览

r - R:每次运行时聚类结果都不同

在'amap'包中运行了几次,但即使参数和种子值始终相同,每次运行Kmeans或其他聚类方法时,聚类结果都不同。

我在不同的包中尝试了另一个 kmeans 函数,但仍然相同......

事实上,我想同时使用 Weka 和 R,所以我也尝试SimpleKMeans了 RWeka 包,这总是给出相同的值。但是,问题是我不知道如何在 RWeka 中存储来自 SimpleKmeans 的集群数据以及集群编号,所以我被卡住了......

无论如何,我怎样才能保持聚类结果始终相同?或如何将聚类结果存储SimpleKmeans到 R 中?

0 投票
4 回答
2606 浏览

optimization - 是否可以优化此 Matlab 代码以使用 k-means 的质心进行矢量量化?

我使用大小为 4000x300(4000 个质心,每个质心有 300 个特征)的 k-means 创建了一个码本。使用密码本,然后我想标记一个输入向量(用于稍后进行分箱)。输入向量的大小为 Nx300,其中 N 是我收到的输入实例的总数。

为了计算标签,我为每个输入向量计算最近的质心。为此,我将每个输入向量与所有质心进行比较,并选择距离最小的质心。那么标签就是那个质心的索引。

我当前的 Matlab 代码如下所示:

但是,这段代码仍然相当慢(出于我的目的),我希望有一种方法可以进一步优化代码。

一个明显的问题是有一个 for 循环,它是 Matlab 良好性能的祸根。我一直试图想出一种方法来摆脱它,但没有运气(我研究过将 arrayfun 与 bsxfun 结合使用,但还没有让它起作用)。或者,如果有人知道任何其他加快速度的方法,我将不胜感激。

更新

在做了一些搜索之后,我找不到使用 Matlab 的好解决方案,所以我决定查看 Python 的 scikits.learn 包中用于 'euclidean_distance' (缩短)的内容:

它使用欧几里得距离 ((xy)^2 -> x^2 + y^2 - 2xy) 的二项式形式,据我所知,它通常运行得更快。我完全未经测试的 Matlab 翻译是:

0 投票
4 回答
18469 浏览

cluster-analysis - WEKA K-Means 聚类

任何人都可以解释 WEKA 中 K-Means 聚类的输出实际上意味着什么。

例如

列中的数字实际上是什么意思,它表示表格上方的聚类质心,但是如何确定两个聚类的质心是什么?

如果有人能解释这些数字的含义,我将不胜感激。

如果有人对如何完成对发现的集群的轮廓评估有任何想法,那也很棒。

谢谢