Ich bin ziemlich neu mit der Arbeit mit Textdaten.Wie finde ich die Varianz in Tfidf Matrix mit Kmeans erklärt?
Ich habe einen Datenrahmen von etwa 300.000 eindeutigen Produktnamen und ich versuche, k zu verwenden, um ähnliche Namen zusammen zu clustern. Ich benutzte sklearns tfidfvectorizer, um die Namen zu vektorisieren und in eine tf-idf-Matrix umzuwandeln.
Weiter lief ich k bedeutet auf der TF-IDF-Matrix mit der Anzahl der Cluster Bereich von 5 bis 10.
Ich bin auf auf Fehler stecken, wenn die Varianz zu berechnen versucht erklärt D_k
ValueError: setting an array element with a sequence.
Ich möchte um die Varianz erklärten v. Anzahl der Cluster-Plot, so dass ich unterscheiden kann, wo der Ellenbogen ist.
Ich Referenzierung https://datascience.stackexchange.com/questions/6508/k-means-incoherent-behaviour-choosing-k-with-elbow-method-bic-variance-explain
from sklearn.feature_extraction.text import TfidfVectorizer
#define vectorizer parameters
tfidf_vectorizer = TfidfVectorizer(use_idf=True,
stop_words = 'english',
ngram_range=(2,4))
%time tfidf_matrix = tfidf_vectorizer.fit_transform(unique_names)
# clustering with kmeans
from sklearn.cluster import KMeans
num_clusters = range(5,10)
%time KM = [KMeans(n_clusters=k).fit(tfidf_matrix) for k in num_clusters]
from scipy.spatial.distance import cdist, pdist
centroids = [k.cluster_centers_ for k in KM]
D_k = [cdist(tfidf_matrix, cent) for cent in centroids]