2016-08-11 4 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) 

出力kは、意味:列挙クラスタは

[2 2 0 0 1 1 0 0] 

K-手段は、データを完全に動作します。しかし、クラスタ番号は、シーケンスに従うことなく、0、1と2との間にランダムに生成されます。 設計によって

+1

あなたが達成しようとしているもので、より具体的だろうか?ここでの質問は何ですか? –

+0

あなたは何のことを言っていますか? – polku

+0

さらなる処理のためにランダムの代わりに0 0 1 1 2 2 1 1のような出力を得たい – user2717427

答えて

0

K-手段がランダム化アルゴリズムです。

それはランダムセンターで始まります。そして、それを複数回実行することによって、異なるソリューションを得ることができます。いくつかは他のものより良いかもしれません - それは良いです。

ランダム化されているため、どのクラスタがクラスタ#0、#1などであるかは定義されていません。が置換されます。