Como criar e executar um modelo de aprendizagem não supervisionada fazer previsões com K-Means

O algoritmo K-means exige um parâmetro de inicialização do usuário, a fim de criar uma instância de análise preditiva. Ele precisa de saber quantas K clusters para usar para executar o seu trabalho.

sepal Comprimentosepal LarguraComprimento pétalapétala LarguraClasse Alvo / etiqueta
5.13,51.40,2Setosa (0)
73.24.71.4Versicolor (1)
6.33.362.5Virginica (2)

Desde que você está usando o conjunto de dados Iris, você já sabe que ele tem três clusters. O conjunto de dados Iris tem três classes da flor Iris (setosa, Versicolor, e Virginica). Em geral, quando você está criando uma tarefa de aprendizagem não supervisionado com um algoritmo de agrupamento, você não sabe quantos agrupamentos para especificar.

Alguns algoritmos estão disponíveis, que tenta determinar o melhor número de clusters, mas os seus resultados podem ser duvidosa. Um desses itera método a partir de uma gama de clusters e, em seguida, seleciona um número de clusters que melhor se adapta seus critérios matemáticos. Esta abordagem requer a computação pesada, pode levar um longo tempo, e ainda não pode produzir o melhor K (Número de clusters).

A melhor maneira de obter resultados imediatos é fazer uma estimativa sobre o número de clusters para usar - basear a sua estimativa sobre características presentes nos dados (se um ou vários recursos), ou em algum outro conhecimento dos dados que você pode ter a partir de o especialista domínio do negócio.

Este caindo para trás em adivinhação (adivinhação, mesmo educado) é uma grande limitação das K-means clustering algoritmo.

Para criar uma instância de K-means clustering algoritmo e executar os dados através dele, digite o seguinte código no interpretador.

>>> From kmeans importação sklearn.cluster >>> kmeans = kmeans (n_clusters = 3, random_state = 111) >>> kmeans.fit (iris.data)

A primeira linha de código importa a biblioteca kmeans na sessão. A segunda linha cria o modelo e as armazena em uma variável chamada kmeans. O modelo é criado com o número de clusters definido para 3. A terceira linha se encaixa no modelo aos dados Iris.

Ajuste do modelo é a parte principal do algoritmo, onde produzirá os três clusters com o conjunto de dados dada e construir uma função matemática que descreve a linha ou curva que melhor se ajusta aos dados. Para ver os clusters que o algoritmo produz, digite o seguinte código.

>>> kmeans.labels_

A saída deve ser semelhante a este:

matriz ([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])

Esta é a forma como o algoritmo K-means rotula os dados como pertencentes a grupos, sem entrada do usuário sobre os valores-alvo. Aqui a única coisa que K-means sabia era o que você desde que: o número de clusters. Este resultado mostra como o algoritmo visto os dados, eo que ela aprendeu sobre as relações de itens de dados para o outro - daí o termo aprendizagem não supervisionada.

Você pode ver imediatamente que alguns dos pontos de dados foram classificadas erroneamente. Você sabe, a partir do conjunto de dados Iris, que os valores-alvo deve ser:

  • As primeiras 50 observações devem ser rotulados da mesma (como 1s, neste caso).

    Esta gama é conhecido como o setosa classe.

  • Observações 51 a 100 devem ser rotulados da mesma (como 0s neste caso).

    Esta gama é conhecido como o classe versicolor.

  • Observações 101 a 150 devem ser rotulados da mesma (como 2s, neste caso).

    Esta gama é conhecido como o classe virginica.

Não importa se o K-means marcado cada conjunto de 50 com um 0, 1 ou 2. Enquanto cada conjunto de 50 tem o mesmo rótulo, que previu com precisão o resultado. É até você para dar a cada grupo um nome e de encontrar significado em cada cluster.

Se você executar o algoritmo K-means novamente, ele pode produzir um número completamente diferente para cada conjunto de 50 - mas o significado seria o mesmo para cada conjunto (classe).

Você pode criar um modelo K-means que pode gerar a mesma saída de cada vez, passando o random_state parâmetro com um valor de semente fixa para a função que cria o modelo. O algoritmo depende de aleatoriedade para inicializar os centros de cluster.

Fornecer um valor de semente fixa tira a aleatoriedade. Ao fazê-lo, essencialmente, diz K-significa para selecionar os mesmos pontos de dados iniciais para inicializar os centros de cluster, cada vez que você executar o algoritmo. É possível obter um resultado diferente, removendo o random_state parâmetro da função.

menu