Визуализация кластеров, возвращаемых Kmeans - PullRequest
3 голосов
/ 24 апреля 2019

Я использовал KMeans для кластеризации, как показано ниже, но я не знаю, чтобы визуализировать кластеры, как показано на рисунке ниже, чтобы увидеть удовлетворение клиента. example

Код:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score

documents = ["This little kitty came to play when I was eating at a          restaurant.",
         "Merley has the best squooshy kitten belly.",
         "Google Translate app is incredible.",
         "If you open 100 tab in google you get a smileyface.",
         "Best cat photo I've ever taken.",
         "Climbing ninja cat.",
         "Impressed with google map feedback.",
         "Key promoter extension for Google Chrome."]

  vectorizer = TfidfVectorizer(stop_words='english')
  X = vectorizer.fit_transform(documents)

 true_k = 3
 model = KMeans(n_clusters=true_k, init='k-means++',  max_iter=100,n_init=1)
 model.fit(X)

1 Ответ

0 голосов
/ 25 апреля 2019

Давайте представим, что у вас есть способ узнать, какой раздел k-средних представляет какое настроение, вы можете построить круговую диаграмму следующим образом:

print(model.labels_)  # For illustration, you can see which sentence is in which cluster
# Here we get the proportions
nb_samples = [sum(model.labels_ == j) for j in range(true_k)]

# On the next line the order is RANDOM. I do NOT know which cluster represents what.
# The first label should represent samples in cluster 0, and so on
labels = 'positive', 'neutral', 'negative'
colors = ['gold', 'red', 'lightblue']  # Same size as labels

# Pie chart
plt.pie(nb_samples, labels=labels, colors=colors, autopct='%1.1f%%')
plt.axis('equal')
plt.show()

Кроме того, несколько прогонов дадут вам разныерезультаты с точки зрения того, какой кластер представляет какую категорию.

Этого можно избежать, задав числовое случайное начальное число.

import numpy as np
np.random.seed(42)  # Or any other integer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...