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 重複...