聚類練習3 k means 聚類

2021-07-16 19:43:30 字數 2568 閱讀 6502

資料任然選擇聚類分析2中資料;

程式用python程式設計。

準備%將maltab中將m資料檔案轉化為txt文字檔案。

程式#------------------匯入讀取資料

importnumpyasnp

fi=open("d:\\alsun\data.txt")

lin=fi.readlines()

fi.close()

data=np.ones([100,200])

fori,linesinenumerate(lin):

data[i][:]=lines.split("\t")

data1=zip(*data)

#data2=[i for i in data1]

data2=list(data1)

data3=np.array(data2)

#------------距離矩陣計算

ycdata=np.zeros([200,200])

foriinrange(200):

forjinrange(200):

dc=data3[i]-data3[j]

dc=dc**2

dt=sum(dc)

dt=dt**0.5

ycdata[i][j]=dt

z=[0,1]

err=1

n=1u=np.ones([2,200])

#-----------k-means演算法

whileerr>0.05:

n=n+1

m=[ycdata[line]forlineinz]

u[0][:]=list(map(int,(m[1]>m[0])))

u[1][:]=list(map(int,(m[1]<=m[0])))

sum1=np.inner(m,u)

sum2=sum1[1][1]+sum1[0][0]

err=sum2-err

sort1=

sort2=

fori,jinenumerate(u[0][:]):

summ=0

ifj:

sum3=np.inner(u[0][:],ycdata[i][:])

else:

sum4=np.inner(u[1][:],ycdata[i][:])

sum5=np.sort(sort1)

sum6=np.sort(sort2)

z[0]=list(sort1).index(sum5[0])

z[1]=list(sort2).index(sum6[0])

print(u)

輸出結果
[[ 1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.

1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.

1.  1.  1.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.

0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.

0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.

0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.

0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.

0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  1.  1.  1.

1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.

1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.

1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.

1.  1.]

k means聚類,密度聚類,層次聚類優缺點

k means 優點 1,簡單,易於理解和實現 2,時間複雜度低 缺點 1,需要對均值給出定義,2,需要指定要聚類的數目 3,一些過大的異常值會帶來很大影響 4,演算法對初始選值敏感 5,適合球形聚類 層次聚類 優點 1,距離和規則的相似度容易定義,限制少 2,不需要預先制定聚類數 3,可以發現類的...

K Means聚類演算法

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

聚類演算法 K means

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