Como avaliar um modelo de aprendizagem não supervisionada com K-Means
Depois de ter escolhido o seu número de clusters para análise preditiva e criaram o algoritmo para preencher os clusters, você tem um modelo preditivo. Você pode fazer previsões com base em novos dados de entrada, chamando o prever função da instância K-means e passando uma série de observações. Parece que este:
>>> # Para chamar a função de prever com uma única observação >>> kmeans.predict ([5.1, 3.5, 1.4, 0.2]) array ([1])
Quando o prever função localiza o centro de cluster que a observação é o mais próximo, ele gera o índice de matriz que do centro de cluster. matrizes Python são indexados a 0 (ou seja, o primeiro item começa em 0). Observações mais próximos a um centro de cluster serão agrupados em que cluster.
Neste exemplo, o K-means prevê que a observação pertence ao cluster 1 (setosa neste caso) - uma previsão fácil, porque a classe setosa é linearmente separáveis e longe das outras duas classes.
Além disso, este exemplo inclui apenas a primeira observação do conjunto de dados para fazer a predição verificável e fácil de explicar. Você pode ver que os atributos da observação que estamos tentando prever são muito perto do centro da segunda cluster (kmeans.cluster_centers_ [1]).
Para ver os centros de cluster, digite o seguinte código:
>>> Kmeans.cluster_centers_array ([[5,9016129, 2,7483871, 4,39354839, 1,43387097], [5,006, 3,418, 1,464, 0,244], [6,85, 3,07368421, 5,74210526, 2,07105263]])
Para ver as etiquetas de cluster que o algoritmo K-means produz, digite o seguinte código:
>>> Kmeans.labels_array ([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2,0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2,2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0])
Você também pode usar o prever funcionar para avaliar um conjunto de observações, como mostrado aqui:
>>> # Para chamar o método de prever com um conjunto de pontos de dados >>> kmeans.predict ([[5.1, 3.5, 1.4, 0.2], [5.9, 3.0, 5.1, 1.8]]) array ([1,0 ])
Embora você sabe que a solução de três clusters é tecnicamente correto, não se surpreenda se intuitivamente a solução de dois clusters parece procurar o melhor. Se você aumentar o número de clusters além da terceira, taxa de sucesso de suas previsões começa a quebrar. Com um pouco de sorte (e um pouco de adivinhação educada), você vai escolher o melhor número de clusters.
Considere o processo como misturar um pouco de arte com a ciência. Até mesmo o próprio algoritmo utiliza aleatoriedade na sua selecção dos pontos de dados iniciais que utiliza para iniciar cada cluster. Assim, mesmo se você está adivinhando, você está em boa companhia.
A avaliação do desempenho de um algoritmo requer uma etiqueta que representa o esperado e um valor previu valor para o comparar com. Lembre-se que quando você aplica um algoritmo de agrupamento para um modelo de aprendizagem não supervisionada, você não sabe o que os valores esperados são - e você não dar rótulos ao algoritmo de agrupamento.
O algoritmo coloca pontos de dados em grupos com base nos quais os pontos de dados são semelhantes a um outro- pontos de dados diferentes acabam em outros grupos. Para o conjunto de dados Iris, K-means não tem noção de setosa, Versicolor ou Virginica classes: ele só sabe que é suposto a se agrupar os dados em três grupos e nomeá-los aleatoriamente 0-2.
O propósito da aprendizagem não supervisionado com agrupamento é encontrar relações significativas nos dados, de preferência onde você não poderia tê-los visto de outra forma. Cabe a você decidir se essas relações são uma boa base para uma visão prática.