python 實現kmeans聚類

2022-07-20 17:48:16 字數 2943 閱讀 2259

程式設計中在做數值相等判斷的時候,直接使用==判斷並不可靠。實際上經過運算後的兩個值(浮點型)並不可能完全一致,可能會因為小數點後的些許差異導致判斷為false。

比如:1

print1e-5==1e-6//這肯定是false,但是實際這兩個值可以看作近似相等。

在kmeans中判斷是否結束迴圈,就是判斷重新計算的聚類中心點是否和原聚類中心點一致,實際上新舊聚類中心點之間會有乙個可允許的誤差。修改**如下:12

3456

78910

1112

1314

1516

1718

1920

2122

23importnumpy as np

defkmeans(data, n, m, k):

rarray=np.random.random(size=k)

rarray=np.floor(rarray*n)

rarray.astype(int)

cls=np.zeros([1,n],np.int)

center=np.take(data,rarray)

pcenter=np.zeros([k,m])

end=true

whileend:

foriinxrange(n):

tmp=data[i]-center

tmp=np.square(tmp)

tmp=np.sum(tmp,axis=1)

cls[i]=np.argmin(tmp)

center=np.zeros([k,m])

count=np.zeros([1,k],np.int)

foriinxrange(n):

center[cls[i]]=center[cls[i]]+data[i]

count[cls[i]]=count[cls[i]]+1

ifnp.sum(center/count-pcenter) <=1e-4:

end=false

pcenter=center/count

Kmeans聚類演算法 python實現

kmeans演算法 k均值演算法需要輸入待聚類的資料和欲聚類的簇數k,主要過程如下 1.隨機生成k個初始點作為質心 2.將資料集中的資料按照距離質心的遠近分到各個簇中 3.將各個簇中的資料求平均值,作為新的質心,重複上一步,直到所有的簇不再改變 import pandas as pd import ...

K means聚類 的 Python 實現

k means聚類 的 python 實現 k means聚類是乙個聚類演算法用來將 n 個點分成 k 個集群。演算法有3步 1.初始化 k 個初始質心會被隨機生成 2.分配 k 集群通過關聯到最近的初始質心生成 3.更新 重新計算k個集群對應的質心 分配和更新會一直重複執行直到質心不再發生變化。最...

K means聚類演算法(python實現簡單原理)

產生隨機50個點 這裡產生資料並儲存資料,不然每次資料總變來變去的,要是 寫得不當,也不太方便檢視 defproducte data f open data.csv w for i in range 50 a random.randint 1,10 b random.randint 1,10 f.w...