问题标签 [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.
algorithm - 我们应该使用 k-means++ 而不是 k-means 吗?
k-means++算法有助于原始 k-means 算法的以下两点:
- 原始的 k-means 算法在输入大小上具有超多项式的最坏情况运行时间,而 k-means++ 声称是 O(log k)。
- 与最佳聚类相比,找到的近似值在目标函数方面可能会产生不太令人满意的结果。
但是 k-means++ 有什么缺点吗?从现在开始,我们是否应该一直使用它而不是 k-means?
statistics - K-mean 聚类,为什么不同的聚类初始位置会影响最终的聚类结果?
我不确定这个问题是否适合这里。无论如何,这里的人似乎很有帮助。所以这是我的问题。
在 k-mean 聚类的情况下,有必要给出聚类的初始位置。为什么不同的聚类初始位置会影响最终的聚类结果?
r - R用热图绘制kmeans聚类
我想用 kmeans 对矩阵进行聚类,并能够将其绘制为热图。听起来很琐碎,我也看过很多这样的情节。我试图用谷歌搜索,但找不到绕过它的方法。
我希望能够在此图上绘制面板 A 或 B 之类的东西。假设我有一个 250 行 5 列的矩阵。我不想对列进行聚类,只是对行进行聚类。
那么如何将这 10 个集群绘制为热图?您的评论和帮助非常受欢迎。
谢谢。
cluster-analysis - 如何在k-means中找到集群的坐标
我正在尝试在键值类型的向量上使用 k-means 聚类。我的问题是,如何设置向量中每个元素的坐标?具体来说,键值对是字符串浮点数。我需要这个来稍后找到集群的中心。
java - 用Java读取wav文件
我想用 Java 读取 wav 文件,我将用 K-means 对它们进行分类。
如何在 Java 中读取 wav 文件并将它们分配到数组或类似的东西中(您可以提出建议)以对它们进行分类?
编辑:我想使用 API 来读取 wav 文件和 K-means。
cluster-analysis - 稀疏矩阵中元素聚类的距离度量
我正在尝试使用 K-means 基于大约 1200 个二进制变量对大约 12000 个元素进行聚类。传统的距离度量(欧几里得、曼哈顿、汉明、列文斯坦)都没有产生令人满意的结果。
我设计了以下指标。
Dist(x,y)= P(x=0|y=1) P(y=0|x=1) 的最小值
有没有人对这类问题使用过类似的方法?使用这个指标有什么明显的缺陷吗?我对数据挖掘比较陌生,如果有任何反馈,我将不胜感激。
谢谢
artificial-intelligence - 距离最远的 k 个元素(聚类?)
我有一个简单的机器学习问题:
我有 n (~110) 个元素,以及所有成对距离的矩阵。我想选择相距最远的10个元素。也就是说,我想
我的距离度量是对称的并且尊重三角不等式。
我可以使用什么样的算法?我的第一直觉是执行以下操作:
- 将 n 个元素聚类为 20 个聚类。
- 仅将每个簇替换为该簇中距离原始 n 的平均元素最远的元素。
- 使用蛮力解决剩下的 20 名候选人的问题。幸运的是,20 选 10 只有 184,756。
编辑:感谢 etarion 富有洞察力的评论,在优化问题陈述中将“返回(距离)总和”更改为“返回最小距离”。
algorithm - K-means 可以用来帮助基于像素值的图像分离吗?
我正在尝试根据像素值分离灰度图像:假设一个 bin 中的像素从 0 到 60,另一个 bin 中的像素为 60-120,另一个中的像素为 120-180 ...,依此类推,直到 255。在此范围内大致等距案子。但是,通过使用 K-means 聚类,是否有可能更实际地衡量我的像素值范围应该是多少?试图一起获得相似的像素,而不是在像素浓度较低的地方浪费垃圾箱。
编辑(包括获得的结果):
k-means 没有集群 = 5
algorithm - 具有相等簇大小的 K-means 算法变化
c++ - 不知道“k”的OpenCV中的分层k-Means
我正在尝试对一组 4D 向量进行聚类,但事先不知道应该有多少个聚类。在过去,我已经能够使用 cvKmeans2 进行聚类,只要知道聚类的数量。我正在浏览 API 并遇到cv::flann::hierarchicalClustering
. 这看起来会做我需要的(即,执行k-means,在必要时拆分集群,迭代直到拆分使结果恶化),但我真的在“索引参数”上苦苦挣扎。
我发现我需要创建一个作为第二个参数的索引结构,但是我从以下代码中得到一个错误:
cv::flann::Index fln_idx = cv::flann::KMeansIndexParams::createIndex( framePoints );
错误是:
../src/segmentation_1.cpp:592: error: cannot call member function ‘virtual flann::Index* cv::flann::KMeansIndexParams::createIndex(const cv::Mat&) const’ without object
framePoints
定义如下:
CvMat *framePoints = cvCreateMat( frameTracklets.size( ), 4, CV_32FC1 );
我很确定我在做一些非常愚蠢的事情(我的 C++ 知识还可以,但不是很好)。我想我已经发布了所有相关的代码,但如果没有,请告诉我,我会发布更多。
提前致谢!
更新
我遵循了 LumpN 的建议并使用以下内容创建了一个 Kmeans 对象:
现在,当我运行它时,我收到一条错误消息,hierarchicalClustering()
例如“所需集群的数量应该是>= 1
”(我需要检查何时开始工作 - 我将使用实际错误进行更新)。我假设它createIndex()
给出了起点,然后hierarchicalClustering()
拆分集群直到找到一个好的结果(不确定这是否是最佳的)。我需要cv::flann::KMeansIndexParams()
用一些参数打电话吗?我看过api,完全糊涂了!再次感谢!