У меня есть следующий код, который я нашел на https://pythonprogramminglanguage.com/kmeans-text-clustering/ по кластеризации документов. Хотя я понимаю алгоритм k-средних в целом, у меня возникают небольшие проблемы с пониманием того, что представляют верхние члены в каждом кластере и как они вычисляются? Это самые частые слова, которые встречаются в кластере? В одном сообщении в блоге, которое я прочитал, говорилось, что выведенные слова в конце представляют собой «верхние n слов, ближайших к центроиду кластера» (но что означает, что фактическое слово «ближайшее» к центроиду кластера). Очень хочется разобраться в деталях и нюансах происходящего. Благодарю вас!
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 smiley face.",
"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 = 2
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)
print("Top terms per cluster:")
order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()
for i in range(true_k):
print("Cluster %d:" % i),
for ind in order_centroids[i, :10]:
print(' %s' % terms[ind]),
print