2015-04-05 66 views
0

任何人都可以知道如何调整简单的K-means算法来处理this form的数据集。在某些数据集上改进K平均值

+0

* K * -means不是那么简单,你需要自己实现一个距离函数。你总是可以做一个距离函数,很好地分组这些点。此外,交叉验证.S也许是比SO更好的选择。 – 2015-04-05 23:23:23

+0

感谢您的回答!我有一个解决方案。根据定义,我有2班(红色和蓝色)。如果我用K-means增加K值,让我们说5,然后在合并使argmin函数最小化的两个群集时逐步降低它(逐个)? (在这种情况下,函数会随着K的减少而增加,但是我会遍历这些对并找到使它增加最少的那对)。希望我清楚。 – 2015-04-05 23:49:44

+0

我会考虑一个可以匹配这个例子的距离函数。 交叉验证是否找到这个距离函数的最佳形式? – 2015-04-05 23:50:33

回答

0

解决此问题的一种可能方法是在您的数据集中添加另一个维度,为此在两个类别之间进行拆分。

很显然,这在许多情况下不适用,但如果您已将某种降维应用于数据,则可能需要进行调查。

0

处理该表单数据的最直接方式仍然是使用k-表示它使用k-means的内核版本。 JSAT库中存在2个实现(请参见https://github.com/EdwardRaff/JSAT/blob/67fe66db3955da9f4192bb8f7823d2aa6662fc6f/JSAT/src/jsat/clustering/kmeans/ElkanKernelKMeans.java

正如尼古拉斯所说,另一种选择是创建一个运行k-means的新特征空间。然而,这需要一些关于你将要聚类的数据的先验知识。

之后,你真的只需要移动到不同的算法。 k-means是一种简单的算法,可以对世界进行简单的假设,当这些假设被强烈侵犯时(非线性可分的群集就是其中一种假设),那么您只需接受该算法并选择一个更合适的算法即可。