2016-08-11 1 views
-3
sample=['he buy fish','he buy bread','the pizza is die' 
,'the man buy pizza','mcdonald is there','there is a boy', 
'who beat the man','burger and pizza'] 

fidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000, min_df=0.2, stop_words='english',use_idf=True) 
vect=TfidfVectorizer(min_df=1) 
x=vect.fit_transform(sample) 
idf=vect.idf_ 

dist = 1 - cosine_similarity(x) 
num_clusters = 3 

km = KMeans(n_clusters=num_clusters) 
km.fit(x) 
clusters = km.labels_.tolist() 
print(clusters) 

output:Enumeration des k-means-Cluster

[2 2 0 0 1 1 0 0] 

K-means perfekt funktionieren auf die Daten. Die Cluster-Nummer wird jedoch zufällig zwischen 0, 1 und 2 generiert, ohne einer Sequenz zu folgen.

+1

Können Sie genauer beschreiben, was Sie erreichen möchten? Was ist die Frage hier? –

+0

Über welche Sequenz sprichst du? – polku

+0

Ich möchte die Ausgabe wie 0 0 1 1 2 2 1 1 statt zufällig für die weitere Verarbeitung – user2717427

Antwort

0

k-means von Design ist ein randomisierter Algorithmus.

Es beginnt mit zufällig Zentren. Und wenn Sie es mehrmals ausführen, können Sie verschiedene Lösungen erhalten. Manche mögen besser sein als andere - das ist gut.

Da es randomisiert ist, ist nicht definiert, welcher Cluster Cluster # 0, # 1 usw. ist - sie dürfen permutiert werden.