【sklearn】KMeans 计算样本质心
文章目錄
- KMeans質(zhì)心介紹
- 計(jì)算質(zhì)心
- 計(jì)算樣本間距離
- 計(jì)算每個(gè)樣本到質(zhì)心的距離,并按照從小到大的順序排列
KMeans質(zhì)心介紹
一個(gè)簇中所有數(shù)據(jù)的均值μ(j),通常被稱為這個(gè)簇的“質(zhì)心(centroids)”,j表示第j個(gè)簇。在一個(gè)二維平面中,一簇?cái)?shù)據(jù)點(diǎn)的質(zhì)心的橫坐標(biāo)就是這一簇?cái)?shù)據(jù)點(diǎn)的橫坐標(biāo)的均值,質(zhì)心的縱坐標(biāo)就是這一簇?cái)?shù)據(jù)點(diǎn)的縱坐標(biāo)的均值,同理可推廣至高維空間。
-
解釋
其中,m為一個(gè)簇中樣本的個(gè)數(shù),j是每個(gè)樣本的編號(hào)。這個(gè)公式被稱為簇內(nèi)平方和(cluster Sum of Square),又叫做 Inertia。
而將一個(gè)數(shù)據(jù)集中的所有簇的簇內(nèi)平方和相加,就得到了整體平方和(Total Cluster Sum of Square),又叫做 total inertia. Total Inertia越小,代表著每個(gè)簇內(nèi)樣本越相似,聚類的效果就越好。
因此KMeans追求的是,求解能夠讓 inertia最小化的質(zhì)心。實(shí)際上,在質(zhì)心不斷變化不斷迭代的過(guò)程中,總體平方和是越來(lái)越小的。我們可以使用數(shù)學(xué)來(lái)證明,當(dāng)整體平方和最小的時(shí)候,質(zhì)心就不再發(fā)生變化了。如此,k- Means的求解過(guò)程,就變成了一個(gè)最優(yōu)化問(wèn)題。
返回頂部
計(jì)算質(zhì)心
在一個(gè)二維平面中,一簇?cái)?shù)據(jù)點(diǎn)的質(zhì)心的橫坐標(biāo)就是這一簇?cái)?shù)據(jù)點(diǎn)的橫坐標(biāo)的均值,質(zhì)心的縱坐標(biāo)就是這一簇?cái)?shù)據(jù)點(diǎn)的縱坐標(biāo)的均值,同理可推廣至高維空間。
#計(jì)算質(zhì)心 def cal_Cmass(data):'''input:data(ndarray):數(shù)據(jù)樣本output:mass(ndarray):數(shù)據(jù)樣本質(zhì)心'''Cmass = np.mean(data,axis=0)return Cmass cmass = cal_Cmass([[8,8,8],[7,7,7],[9,9,9]]) # [8. 8. 8.]- 通過(guò)定義先求出質(zhì)心
返回頂部
計(jì)算樣本間距離
import numpy as np #計(jì)算樣本間距離 def distance(x, y, p=2):'''input:x(ndarray):第一個(gè)樣本的坐標(biāo)y(ndarray):第二個(gè)樣本的坐標(biāo)p(int):等于1時(shí)為曼哈頓距離,等于2時(shí)為歐氏距離output:distance(float):x到y(tǒng)的距離 ''' dis2 = np.sum(np.abs(x-y)**p) # 計(jì)算dis = np.power(dis2,1/p)return dis- 定義方法計(jì)算兩點(diǎn)之間的距離
返回頂部
計(jì)算每個(gè)樣本到質(zhì)心的距離,并按照從小到大的順序排列
#計(jì)算每個(gè)樣本到質(zhì)心的距離,并按照從小到大的順序排列 def sorted_list(data,Cmass):'''input:data(ndarray):數(shù)據(jù)樣本Cmass(ndarray):數(shù)據(jù)樣本質(zhì)心output:dis_list(list):排好序的樣本到質(zhì)心距離'''dis_list = []for i in range(len(data)): # 遍歷data數(shù)據(jù),與質(zhì)心cmass求距離dis_list.append(distance(Cmass,data[i][:]))dis_list = sorted(dis_list) # 排序return dis_list list = sorted_list([[8,8,8],[7,7,7],[9,9,9]],cmass) # [0.0, 1.7320508075688772, 1.7320508075688772]- 遍歷data數(shù)據(jù),,調(diào)用distance()函數(shù)與質(zhì)心cmass求點(diǎn)距。
返回頂部
總結(jié)
以上是生活随笔為你收集整理的【sklearn】KMeans 计算样本质心的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 横图图片广告代码html,横向不间断的连
- 下一篇: 电位计,电子尺,电阻信号隔离变送器(DI