Hak*_*kim 6 matlab textures cluster-analysis image-processing k-means
我matlab从本教程使用Gabor过滤器的纹理分割中获取了代码.
为了测试clustering得到的多维texture响应的算法gabor filters,我应用Gaussian Mixture而Fuzzy C-means不是K-means比较它们的结果(在所有情况下簇的数量= 2):
L = kmeans(X, 2, 'Replicates', 5);
Run Code Online (Sandbox Code Playgroud)
options = statset('MaxIter',1000);
gmm = fitgmdist(X, 2, 'Options', options);
L = cluster(gmm, X);
Run Code Online (Sandbox Code Playgroud)
[centers, U] = fcm(X, 2);
[values indexes] = max(U);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我发现奇怪的是K-means群集比使用GMM和提取的群集更准确Fuzzy C-means.
如果任何人都可以向我解释了高维(L x W x 26:26的数gabor filters使用)作为输入的数据GMM和Fuzzy C-means分类是什么导致聚类描述不太准确?
换句话说GMM,Fuzzy C-means聚类对数据的维数更敏感,而不是K-means?
很高兴这个评论很有用,以下是我的回答形式的观察结果。
这些方法中的每一种都对初始化敏感,但通过使用 5和更高质量的初始化来作弊k-means( )。其余方法似乎使用单个随机初始化。'Replicates'k-means++
k-means是GMM如果你强制球面协方差。所以从理论上讲,它不应该做得更好(如果真正的协方差实际上是球形的,它可能会做得稍微好一些)。
我认为大部分差异都归因于初始化。您应该能够通过使用 k 均值结果作为其他算法的初始条件来测试这一点。或者正如您所尝试的那样,使用不同的随机种子运行几次,并检查 和 中的变化是否GMM比Fuzzy C-means中的变化更多k-means。