聚類 k means演算法

2022-03-02 16:04:51 字數 1604 閱讀 1084

import os

import sys

from sklearn import feature_extraction

from sklearn.feature_extraction.text import tfidftransformer

from sklearn.feature_extraction.text import countvectorizer

from sklearn.cluster import kmeans

labels=["玉公尺深厚層施肥精量播種機械化技術整合與示範","冀北丘陵山地葡萄優質高效水肥調控技術","機械化土壤保墒技術的研究與應用","有機物料快速高效腐熟及其應用技術","類四","類ⅴ","華北油田持續穩產關鍵開發技術研究與應用"]

if __name__ == '__main__':

corpus=["玉公尺 播種機 農業 三農 農機 農資",

"葡萄 水肥一體化 調控",

"蔬菜 生物有機肥 有機物",

"蔬菜 農業 三農 時政",

"資料傳輸方式 通訊",

"烏洛託品",

"華北油田 有效市場 經濟建設 經濟利潤 國內經濟 關鍵 時政 ** 地質"]

vectorizer=countvectorizer()#該類會將文字中的詞語轉換為詞頻矩陣,矩陣元素a[i][j] 表示j詞在i類文字下的詞頻

transformer=tfidftransformer()#該類會統計每個詞語的tf-idf權值

tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第乙個fit_transform是計算tf-idf,第二個fit_transform是將文字轉為詞頻矩陣

word=vectorizer.get_feature_names()#獲取詞袋模型中的所有詞語

weight=tfidf.toarray()#將tf-idf矩陣抽取出來,元素a[i][j]表示j詞在i類文字中的tf-idf權重

print(word)

print(weight)

for i in range(len(weight)): # 列印每類文字的tf-idf詞語權重,第乙個for遍歷所有文字,第二個for便利某一類文字下的詞語權重

print(u"-------這裡輸出第", i, u"類文字的詞語tf-idf權重------")

for j in range(len(word)):

print(word[j], weight[i][j])

mykms=kmeans(n_clusters=5)

y=mykms.fit_predict(weight)

for i in range(0,10):

label_i=

for j in range(0,len(y)):

if y[j]==i:

print('label_'+str(i)+':'+str(label_i))

根據corpus進行分類,將lable打入lable_i標籤中

結果截圖

K Means聚類演算法

k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...

聚類演算法 K means

演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...

k means聚類演算法

說到聚類,得跟分類區別開來,分類是按人為給定的標準將樣本歸到某個類別中去,在機器學習中多是監督學習,也就是訓練樣本要給標籤 正確的類別資訊 而聚類是在某種規則下自動將樣本歸類,在機器學習中是無監督學習,不需要提前給樣本打標籤。k means聚類演算法,就是在某種度量方式下,將樣本自動劃分到k個類別中...