1

我们如何在 Matlab 中实现 K-means 算法而不使用 kmeans(X,k) 语法?

实际上问题不在于实现算法。请看下图: 在此处输入图像描述

我实现了大多数网站提供的算法,例如http://en.wikipedia.org/wiki/Kmeans

1. Give initial values to m1 .. mk
2. Assignment with closest mean
3. Update

我设置了 X 的 4 个观测值(200 个样本),我已经知道这 4 个观测值来自 1 个集群。因此,根据算法,上述图像的聚类是可以解释的,但事实并非如此。我认为 4 个初始值不应该随机选择。

我还运行了一些其他源代码,例如http://people.revoledu.com/kardi/tutorial/kMean/matlab_kMeans.htm。推导出同样的结果。您可以从http://www.4shared.com/get/IfwUEUBD/Observation.html下载我的观察结果并自己查看结果。

4

2 回答 2

3

如果您想实现自己的 k-means 或(无论出于何种原因)不想使用 MATLAB k-means 语法,那么有几种方法:

  1. 阅读论文:“An Efficient k-Means Clustering Algorithm: Analysis and Implementation”,还阅读其他一些资源,然后编写自己的代码。

  2. 搜索互联网,直到找到其他免费实现,以便您可以在代码中使用它。

您可能希望查看以下链接:

http://people.revoledu.com/kardi/tutorial/kMean/index.html

于 2011-07-18T18:17:03.920 回答
0

“不使用 kmeans(X,k) 语法”是指不提前指定 k 簇数吗?这是不可能的,因为该算法依赖于提前知道集群的数量。如果您真的想在事先不知道集群数量的情况下执行集群,我会研究另一种算法,例如DBSCAN 算法

如果您想要已经使用可用源代码实现的 K-means 算法,请查看VLFeat以获得可靠的实现。语法就是 kmeans(X,k)。

于 2011-07-18T18:10:24.313 回答