當前位置:首頁 » 操作系統 » kmeans演算法

kmeans演算法

發布時間: 2022-01-08 17:47:36

⑴ k-means聚類演算法常用的終止條件有哪些

K-means 演算法屬於聚類分析方法中一種基本的且應用最廣泛的劃分演算法,它是一種已知聚類類別數的聚類演算法。指定類別數為K,對樣本集合進行聚類,聚類的結果由K 個聚類中心來表達,基於給定的聚類目標函數(或者說是聚類效果判別准則),演算法採用迭代更新的方法,每一次迭代過程都是向目標函數值減小的方向進行,最終的聚類結果使目標函數值取得極小值,達到較優的聚類效果。使用平均誤差准則函數E作為聚類結果好壞的衡量標准之一,保證了演算法運行結果的可靠性和有效性。

⑵ K-means的演算法優點

K-Means聚類演算法的優點主要集中在:
1.演算法快速、簡單;
2.對大數據集有較高的效率並且是可伸縮性的;
3.時間復雜度近於線性,而且適合挖掘大規模數據集。K-Means聚類演算法的時間復雜度是O(nkt) ,其中n代表數據集中對象的數量,t代表著演算法迭代的次數,k代表著簇的數目。

⑶ K-Means聚類演算法原理是怎麼樣的

問題:
姓名 身高 體重 眼睛
A 180 X 1.2
A X 140 X

A 180 140 X

A 168 120 1.5
姓名一樣,用java演算法,判斷出是兩個人?

⑷ k_means演算法

你的文件名叫什麼

⑸ k-means演算法數據需標准化嗎

理論上是不需要的,因為標准化的線性變換不會影響距離的相對大小,但是實踐時,數據標准化與否結果是不同的,可能與演算法具體實現有關。

⑹ k-means聚類演算法的java代碼實現文本聚類

K-MEANS演算法:
k-means 演算法接受輸入量 k ;然後將n個數據對象劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個「中心對象」(引力中心)來進行計算的。

k-means 演算法的工作過程說明如下:首先從n個數據對象任意選擇 k 個對象作為初始聚類中心;而對於所剩下其它對象,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然後再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復這一過程直到標准測度函數開始收斂為止。一般都採用均方差作為標准測度函數. k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。

具體如下:
輸入:k, data[n];
(1) 選擇k個初始中心點,例如c[0]=data[0],…c[k-1]=data[k-1];
(2) 對於data[0]….data[n], 分別與c[0]…c[n-1]比較,假定與c[i]差值最少,就標記為i;
(3) 對於所有標記為i點,重新計算c[i]=/標記為i的個數;
(4) 重復(2)(3),直到所有c[i]值的變化小於給定閾值。

演算法實現起來應該很容易,就不幫你編寫代碼了。

⑺ kmeans演算法用Python怎麼實現

函數

loadDataSet(fileName)
從文件中讀取數據集
distEclud(vecA, vecB)
計算距離,這里用的是歐氏距離,當然其他合理的距離都是可以的
randCent(dataSet, k)
隨機生成初始的質心,這里是雖具選取數據范圍內的點
kMeans(dataSet, k, distMeas=distEclud, createCent=randCent)
kmeans演算法,輸入數據和k值。後面兩個事可選的距離計算方式和初始質心的選擇方式
show(dataSet, k, centroids, clusterAssment)
可視化結果

  • 1 #coding=utf-8 2 from numpy import * 3 4 def loadDataSet(fileName): 5 dataMat = [] 6 fr = open(fileName) 7 for line in fr.readlines(): 8 curLine = line.strip().split(' ') 9 fltLine = map(float, curLine)10 dataMat.append(fltLine)11 return dataMat12 13 #計算兩個向量的距離,用的是歐幾里得距離14 def distEclud(vecA, vecB):15 return sqrt(sum(power(vecA - vecB, 2)))16 17 #隨機生成初始的質心(ng的課說的初始方式是隨機選K個點)
    18 def randCent(dataSet, k):19 n = shape(dataSet)[1]20 centroids = mat(zeros((k,n)))21 for j in range(n):22 minJ = min(dataSet[:,j])23 rangeJ = float(max(array(dataSet)[:,j]) - minJ)24 centroids[:,j] = minJ + rangeJ * random.rand(k,1)25 return centroids26 27 def kMeans(dataSet, k, distMeas=distEclud, createCent=randCent):28 m = shape(dataSet)[0]29 clusterAssment = mat(zeros((m,2)))#create mat to assign data points
    30 #to a centroid, also holds SE of each point31 centroids = createCent(dataSet, k)32 clusterChanged = True33 while clusterChanged:34 clusterChanged = False35 for i in range(m):#for each data point assign it to the closest centroid36 minDist = inf37 minIndex = -138 for j in range(k):39 distJI = distMeas(centroids[j,:],dataSet[i,:])40 if distJI < minDist:41 minDist = distJI; minIndex = j42 if clusterAssment[i,0] != minIndex:
    43 clusterChanged = True44 clusterAssment[i,:] = minIndex,minDist**245 print centroids46 for cent in range(k):#recalculate centroids47 ptsInClust = dataSet[nonzero(clusterAssment[:,0].A==cent)[0]]#get all the point in this cluster48 centroids[cent,:] = mean(ptsInClust, axis=0) #assign centroid to mean
    49 return centroids, clusterAssment50 51 def show(dataSet, k, centroids, clusterAssment):52 from matplotlib import pyplot as plt
    53 numSamples, dim = dataSet.shape
    54 mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr']
    55 for i in xrange(numSamples):
    56 markIndex = int(clusterAssment[i, 0])
    57 plt.plot(dataSet[i, 0], dataSet[i, 1], mark[markIndex])
    58 mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
    59 for i in range(k):
    60 plt.plot(centroids[i, 0], centroids[i, 1], mark[i], markersize = 12)
    61 plt.show()62 63 def main():64 dataMat = mat(loadDataSet('testSet.txt'))65 myCentroids, clustAssing= kMeans(dataMat,4)66 print myCentroids67 show(dataMat, 4, myCentroids, clustAssing)
    68 69 70 if __name__ == '__main__':71 main()
  • 這里是聚類結果,還是很不錯的啦

⑻ kmeans演算法名詞解釋

Kmeans是聚類演算法的一種,在工業界應用廣泛,簡單效果好,ps:企業擁有大數據量可以彌補Kmeans演算法過於簡單的性能劣勢。

⑼ k means演算法如何具體實現呢

1.基本Kmeans演算法[1]

[cpp] view plain
選擇K個點作為初始質心
repeat
將每個點指派到最近的質心,形成K個簇
重新計算每個簇的質心
until 簇不發生變化或達到最大迭代次數

時間復雜度:O(tKmn),其中,t為迭代次數,K為簇的數目,m為記錄數,n為維數

空間復雜度:O((m+K)n),其中,K為簇的數目,m為記錄數,n為維數

熱點內容
ios緩存策略 發布:2024-12-27 00:16:29 瀏覽:505
cmd怎麼打開python 發布:2024-12-27 00:01:15 瀏覽:964
兼修腳本作畫 發布:2024-12-26 23:55:32 瀏覽:218
存儲卡和sd卡一樣嗎 發布:2024-12-26 23:50:43 瀏覽:445
多空線源碼 發布:2024-12-26 23:48:45 瀏覽:322
steam有哪些免費且配置低的游戲 發布:2024-12-26 23:45:36 瀏覽:337
怎麼配一台伺服器的游戲電腦 發布:2024-12-26 23:45:35 瀏覽:6
無丁之地下載ftp 發布:2024-12-26 23:36:32 瀏覽:292
em聚類演算法 發布:2024-12-26 23:22:28 瀏覽:669
php字元串去重 發布:2024-12-26 23:22:26 瀏覽:408