日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【sklearn】KMeans 计算样本质心

發(fā)布時(shí)間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【sklearn】KMeans 计算样本质心 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。