Consegui usar o "Método L" para determinar o número de clusters em um aplicativo geográfico (isto é, essencialmente um problema 2d, embora tecnicamente não-euclidiano).
O Método L é descrito aqui:
Determinando o Número de Clusters / Segmentos em Algoritmos Hierárquicos de Cluster / Segmentação Stan Salvador e Philip Chan
Essencialmente, isso avalia o ajuste para vários valores de k. Um gráfico em forma de "L" é visto com o valor ótimo de k representado pelo joelho no gráfico. Um cálculo simples de ajuste de mínimos quadrados de linha dupla é usado para encontrar o ponto do joelho.
Achei o método muito lento porque o k-means iterativo deve ser calculado para cada valor de k. Também achei que o k-means funcionou melhor com várias execuções e escolhendo a melhor no final. Embora cada ponto de dados possua apenas duas dimensões, uma simples distância pitagórica não pôde ser usada. Então isso é muito calculista.
Um pensamento é pular todos os outros valores de k (digamos) para metade dos cálculos e / ou reduzir o número de iterações de meios k e, em seguida, suavizar levemente a curva resultante para produzir um ajuste mais preciso. Perguntei sobre isso no StackOverflow - IMHO, a questão da suavização continua sendo uma questão de pesquisa aberta.