Matlab中用于聚类的确定性函数

时间:2019-03-06 16:20:19

标签: matlab machine-learning cluster-analysis k-means

我一直在使用Matlab内置的kmeans函数进行聚类。由于算法中使用的随机性,如果我设置不同的种子,结果将有所不同。这有点烦人。有没有办法减少聚类结果的差异?另外,在Matlab中是否存在用于聚类的确定性函数?

3 个答案:

答案 0 :(得分:1)

如果您拥有图像处理工具箱,那么有些工具将使用确定性的Otsu方法

https://en.wikipedia.org/wiki/Otsu's_method

如果datain是您的输入数据:

2节课: threshold = graythresh(datain);

阈值=将数据分为2类的阈值,归一化为[0,1]

对于多个班级: thresholds = multithresh(datain,N);

N =阈值数量

阈值= 1xN个阈值向量(未规范化)

答案 1 :(得分:0)

这是正常的。 k平均算法在每次迭代后都会创建新的类,因此结果可能会有所不同。 例如:该算法将确定哪个水果是带有梨的苹果。可以将苹果分类为梨,但是所有的苹果都是梨,而所有的梨都是苹果。

答案 2 :(得分:0)

我想出了一些方法来减少聚类结果的差异。

  1. 在kmeans的参数中放入“ OnlinePhase”,“ on”。这将导致本地分钟,通常是全球分钟。
  2. 将“ Replicates”放入参数中的5。在这里5可以用更大的数字代替。它要求Matlab做5次kmeans并选择最佳结果。
  3. 将“ MaxIter”放入参数1000中。这样会将最大迭代次数从默认的100增加到1000,这可能但不太可能提高准确性。

只要我们追求kmeans的最佳结果,我们就更有可能获得一致的结果。