我正在将 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算法的内容。)
像 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