O professor fala que o motivo de obtermos 4 cores diferentes com o código
sns.set(rc={'figure.figsize':(20,20)})
sns.scatterplot(x = vis[:,0], y = vis[:,1], hue = groups)
tem a ver com o fato de que o algoritmo hierárquico consegue diferenciar quais grupos estão próximos dos outros.
Entretanto, ao usar o mesmo código para o algoritmo de K-Means se obtém a mesma situação, com apenas 4 grupos sendo diferenciados. Me parece que tem mais a ver com uma limitação do seaborn de gerar as devidas cores do que com uma inteligencia do modelo. Se não definirmos a palette, o SNS não gera todas as cores para plotar todos os 17 clusters.