julia 中 MATLAB 的等效函数“evalclusters”

问题描述 投票:0回答:1

我正在将 MATLAB 中有关 kmeans 算法的代码翻译为 julia。 根据我的MATLAB代码,

  evaluation = evalclusters(W0,"kmeans","gap","KList",1:max_K);
  loc = evaluation.OptimalK;
  idx = evaluation.OptimalY;

这用于寻找最佳的K。 (我在MATLAB帮助网站上找到的)

我是Julia的新手,所以我不知道。 但据我所知,我认为julia中没有“evalcluster”一一对应的功能。

我该如何处理这个问题?

(我读了这个Julia官方文档,但我找不到任何关于使用“间隙评估”评估kmeans算法的内容。)

matlab julia
1个回答
0
投票

像 DanGetz 一样,我找不到间隙方法的任何实现,但我认为您可以使用 Julia 中实现的任何其他方法来找到最佳 K。作为示例,我使用了 Davies-Bouldin 方法。查看 Clustering.jl 包中的 clustering_quality.jl 示例 1,找到最适合您的数据集的示例。

using Clustering
# test data with 3 clusters
W0 = hcat([4., 5.] .+ 0.4 * randn(2, 10),
         [9., -5.] .+ 0.4 * randn(2, 5),
         [-4., -9.] .+ 1 * randn(2, 5))
max_k = 5 

clusterings = kmeans.(Ref(W0), 2:max_k) # Works with a minimum of 2 clusters
loc = findmin(clustering_quality.(Ref(W0), clusterings, quality_index = 
      :davies_bouldin))[2] + 1
idx = clusterings[loc].assignments
© www.soinside.com 2019 - 2024. All rights reserved.