k-means是無監督聚類演算法,主要是根據樣本的相似度或者樣本之間的距離進行自動分類。
首先,初始化聚類中心,可以隨機選擇k個樣本,也可以固定選擇其中的k個樣本作為初始化的聚類中心。
其次,計算各樣本到所有的聚類中心的相似度(此處用距離表示),將樣本分到與聚類中心相似的最大即距離最小的中心所在的類中。
再次,更新聚類中心,可以通過樣本的平均值計算
最後,迴圈迭代,直至滿足停止條件。
import numpy as np
from operator import itemgetter
defloaddata
(filename):
dataset =
file = open(filename)
for line in file.readlines():
return np.array(dataset)
defcomputedistence
(dataset,centre):
return np.sqrt(((dataset-centre)**2).sum(axis=1))
defcomputecentre
(dataset,k):
n = dataset.shape[1]
centreset = np.zeros((k,n))
minvalue = dataset.min(axis=0)
maxvalue = dataset.max(axis=0)
chagerange = maxvalue-minvalue
centreset = minvalue + chagerange*np.random.rand(k,2)
return centreset
defkmeans
(dataset,k):
m = dataset.shape[0]
clusterresult = np.zeros((m,3))
centres =computecentre(dataset,k)
clusterchanged = true
while clusterchanged:
clusterchanged=false
for i in range(m):
distence = computedistence(dataset[i],centres)
indexes, sorteddistence = zip(*sorted(enumerate(distence), key=itemgetter(1)))
if(clusterresult[i,1] !=indexes[0]):
clusterchanged = true
clusterresult[i,:] = i,indexes[0],sorteddistence[0]
for i in range(k):
tmp = dataset[np.array((clusterresult[clusterresult[:,1] == i])[:,0]).astype(np.int32)]
meanvalue = np.mean(tmp,axis=0)
centres[i,:] = np.mean(tmp,axis=0)
return centres,clusterresult
defmain
(): dataset = loaddata('testset.txt')
centres = computecentre(dataset,4)
centres,clusterresult = kmeans(dataset,4)
if __name__ == '__main__':
main()
資料探勘十大經典演算法
最近想看看資料探勘是個什麼東西,因此特別的關注了下,首先看看資料探勘包含哪些演算法,網上找到了十大經典演算法 01.c4.5 是機器學習演算法中的一種分類決策樹演算法,其核心演算法是 id3演算法 02.k means演算法 是一種聚類演算法。03.svm 一種 監督式學習 的方法,廣泛運用於統計分...
資料探勘十大經典演算法
1 c4.5 2 k means 3 svm 4 apriori 5 em 6 pagerank 7 adaboost 8 knn 9 bayes 10 cart 1 c4.5 計算增益率 step1 計算資料集d的熵 單位為位元 info d step2 計算每個屬性的熵info x d step...
十大經典資料探勘演算法
c4.5演算法 機器學習演算法中的乙個分類決策樹演算法 cart 分類與回歸樹 c4.5與cart都是決策樹演算法 id3用資訊增益,c4.5用資訊增益率,cart用gini係數 knn 樸素貝葉斯 bayes 在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型 decision tree ...