機器學習(一)K means聚類演算法

2021-10-08 20:10:45 字數 2202 閱讀 6229

k-means聚類演算法

k-means演算法以k為引數,把n個物件分成k個簇,使簇內具有較高的相似度,而簇間的相似度較低。

使用sklearn.cluster.kmeans可以呼叫k-means演算法進行聚類

其處理過程如下:

1.隨機選擇k個點作為初始的聚類中心

2.剩下的點,根據其與聚類中心的距離,歸入最近的簇

3.對每個簇,計算所有點的均值作為新的聚類中心

4.重複2、 3直到聚類中心不再發生改變

輸入引數:

• n_clusters:用於指定聚類中心的個數

• init:初始聚類中心的初始化方法

• max_iter:最大的迭代次數

• 一般呼叫時只用給出n_clusters即可,init

預設是k-means++,max_iter預設是300

random_state:隨機狀態

其它引數

• data:載入的資料

• label:聚類後各資料所屬的標籤

• axis: 按行求和

• fit_predict():計算簇中心以及為簇分配序號

屬性

cluster_centers_ : 每個簇中心的座標 array, [n_clusters, n_features]

labels_ :每個樣本的標籤

inertia_ : 樣本到最近集群中心的距離的總和

方法

fit(x[, y]) :執行k均值聚類

fit_predict(x[, y]) :計算簇的中心並且**每個樣本對應的簇類別,相當於先呼叫fit(x)再呼叫predict(x),返回labels標籤(0,1,2……)

fit(x[, y]) fit_predict(x[, y]) 資料型別為[[data1,data2……],[ data1,data2……],……]

例如:data = [[1,4,5,1],[1,5,4,3],[15,23,18,4],[15,48,5,3],[100,5,48]]

km = kmeans(n_clusters=3) #設定分類成幾個簇

lables = km.fit_predict(data)

mooc提供範例

import numpy as np

from sklearn.cluster import kmeans

defloaddata

(filepath)

: fr =

open

(filepath,

'r+'

) lines = fr.readlines(

) retdata =

retcityname =

for line in lines:

items = line.strip(

).split(

",")0]

)[float

(items[i]

)for i in

range(1

,len

(items))]

)return retdata,retcityname

if __name__ ==

'__main__'

: data,cityname = loaddata(

'city.txt'

) km = kmeans(n_clusters=4)

label = km.fit_predict(data)

expenses = np.

sum(km.cluster_centers_,axis=1)

#print(expenses)

citycluster =[[

],,,

]for i in

range

(len

(cityname)):

citycluster[label[i]])

for i in

range

(len

(citycluster)):

print

("expenses:%.2f"

% expenses[i]

)print

(citycluster[i]

)

機器學習之聚類演算法 K Means

參考 聚類演算法可以分為 中心點方法 層次聚類方法 基於密度方法 基於網格 基於模型方法。其中最為經典的是k means演算法 k means屬於中心點方法 也有叫劃分方法 演算法經典簡單。演算法 人工選取k值,並選取k個點作為k個簇的質心 對所有樣本分別計算到k個簇的質心的距離 歐式或者曼哈頓 取...

機器學習演算法 之K means聚類

1.模型 k means演算法並沒有顯式的數學模型,演算法的目的是從資料集中得到k個中心點,每個中心點及其周圍的點形成乙個聚簇。k means是一種無監督的學習模型。k means的學習目標如下圖所示 2.策略 k mean演算法採用的損失函式是平方損失函式。每個簇的點距離中心的平方距離之和構成損失...

機器學習之K means聚類演算法

k均值演算法的計算過程非常直觀 1 從d中隨機取k個元素,作為k個簇的各自的中心。2 分別計算剩下的元素到k個簇中心的相異度,將這些元素分別劃歸到相異度最低的簇。3 根據聚類結果,重新計算k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。4 將d中全部元素按照新的中心重新聚類。5 重複...