python聚類演算法之基本k均值例項詳解
是使用者指定的引數,即所期望的簇的個數。每次迴圈中,每個點被指派到最近的質心,指派到同乙個質心的點集構成乙個。然後,根據指派到簇的點,更新每個簇的質心。重複指派和更新操作,直到質心不發生明顯的變化。
# scoding=utf-8
import pylab as pl
points = [[int(eachpoint.split("#")[0]),
int(eachpoint.split("#")[1])] for eachpoint in
open("points","r")]
# 指定三個初始質心
currentcenter1 = [20,190]; currentcenter2 = [120,90];
currentcenter3 = [170,140]
pl.plot([currentcenter1[0]], [currentcenter1[1]],'ok')
pl.plot([currentcenter2[0]], [currentcenter2[1]],'ok')
pl.plot([currentcenter3[0]], [currentcenter3[1]],'ok')
# 記錄每次迭代後每個簇的質心的更新軌跡
center1 = [currentcenter1]; center2 = [currentcenter2]; center3 =
[currentcenter3]
# 三個簇
group1 = ; group2 = ; group3 =
for runtime in range(50):
group1 = ; group2 = ; group3 =
for eachpoint in points:
#計算每個點到三個質心的距離
distance1 =
pow(abs(eachpoint[0]-currentcenter1[0]),2)
pow(abs(eachpoint[1]-currentcenter1[1]),2)
distance2 =
pow(abs(eachpoint[0]-currentcenter2[0]),2)
pow(abs(eachpoint[1]-currentcenter2[1]),2)
distance3 =
pow(abs(eachpoint[0]-currentcenter3[0]),2)
pow(abs(eachpoint[1]-currentcenter3[1]),2)
#將該點指派到離它最近的質心所在的簇
mindis =
min(distance1,distance2,distance3)
if(mindis ==
eachpoint in group1])/len(group1),sum([eachpoint[1] for eachpoint
in group1])/len(group1)]
currentcenter2 = [sum([eachpoint[0] for
eachpoint in group2])/len(group2),sum([eachpoint[1] for eachpoint
in group2])/len(group2)]
currentcenter3 = [sum([eachpoint[0] for
eachpoint in group3])/len(group3),sum([eachpoint[1] for eachpoint
eachpoint in group1], 'or')
pl.plot([eachpoint[0] for eachpoint in group2], [eachpoint[1] for
eachpoint in group2], 'oy')
pl.plot([eachpoint[0] for eachpoint in group3], [eachpoint[1] for
eachpoint in group3], 'og')
# 列印每個簇的質心的更新軌跡
for center in [center1,center2,center3]:
pl.plot([eachcenter[0] for eachcenter in
center], [eachcenter[1] for eachcenter in center],'k')
pl.show()
執行效果截圖如下:
希望本文所述對大家python程式設計有所幫助。
聚類演算法之K均值聚類
k means聚類方法 1.介紹 k均值聚類是基於樣本集合劃分的聚類演算法。由於每個樣本在劃分的過程中只能屬於乙個類別,所以k means演算法屬於硬聚類。2.演算法過程 k均值聚類演算法是乙個迭代的過程,每次迭代包括兩個步驟 3.複雜度 k均值聚類演算法的複雜度o mnk 其中k表示類別數,m表示...
Python聚類演算法之基本K均值例項詳解
python聚類演算法之基本k均值例項詳解 是使用者指定的引數,即所期望的簇的個數。每次迴圈中,每個點被指派到最近的質心,指派到同乙個質心的點集構成乙個。然後,根據指派到簇的點,更新每個簇的質心。重複指派和更新操作,直到質心不發生明顯的變化。scoding utf 8 import pylab as...
R語言聚類演算法之k中心聚類 K medoids
1.原理解析 針對k 均值演算法易受極值影響這一缺點的改進演算法.在原理上的差異在於選擇個類別中心點時不採樣本均值點,而在類別內選取到其餘樣本距離之和最小的樣本為中心。2.在r語言中的應用 k中心聚類 k medoids 主要運用到了r語言中cluster包 r語言內建包 中的pam函式。pam x...