常用聚類演算法K means及其改進演算法

2021-10-05 00:00:00 字數 1953 閱讀 6609

聚類演算法是將大量資料以相似度為基礎形成若干類,使類內之間的資料最為相似,類間的資料相似度差別盡可能的大,屬於無監督學習。

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

e的計算為:

輸入:簇的數目k和包含n個物件的資料庫

過程:任選k個物件作為初始均值向量;

repeat

for j=1 to n do

根據簇中物件的平均值,將每個物件賦給最類似的簇

for i=1 to k do

更新簇的平均值

計算eunitl e不再發生變化

按簇輸出相應的物件

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets.samples_generator import make_blobs

from sklearn import cluster

from sklearn.metrics import adjusted_mutual_info_score

from sklearn import mixture

def create_data(centers, num=100, std=0.7):

x, label_true = make_blobs(n_samples=num, centers=centers, cluster_std=std)

return x, label_true

"""__init__(self, n_clusters=8, init='k-means++', n_init=10,

max_iter=300, tol=1e-4, precompute_distances='auto',

verbose=0, random_state=none, copy_x=true,

n_jobs=none, algorithm='auto'):

引數:n_clusters: 乙個整數,指定分類簇的數量

init:字串,初始化均值向量的策略

n_init:整數,制定了k均值演算法執行次數

max_iter:整數,指定了單輪k均值演算法中,最大的迭代次數

precompute_distances:是否提前計算樣本間距離

tol:乙個浮點數,指定演算法收斂的閾值

屬性:cluster_centers_:給出分類簇的均值向量

labels_:給出每個樣本所屬簇標記

intertia_:給出每個樣本距離他們各自最近的簇中心的距離之和

方法:fit():訓練模型

predict(x):**樣本所屬簇

fit_predcit(x,y):訓練墨香並**樣本所屬簇

"""def test_kmeans(*args):

x, label_true = args

clst = cluster.kmeans()

clst.fit(x)

predicted_label = clst.predict(x)

print("ari:%s" % adjusted_mutual_info_score(label_true, predicted_label))

print("sum center distance %s" % clst.inertia_)

if __name__ == '__main__':

x, label_true = create_data([[1, 1], [2, 2], [1, 2], [10, 20]],

1000, 0.5)

test_kmeans(x, label_true)

3.1 k-harmonic means(k調和均值):根據簇均值將資料分為k類,通過目標函式和中心移動公式對簇成員進行移動。該演算法降低了初始點選取的依賴。

3.2 akhmp:採用了新的度量函式。

K means聚類演算法及其MATLAB實現

參考 k means屬於無監督學習方法 k表示類別數,means表示均值,k一般由人工來指定,或通過層次聚類 hierarchical clustering 的方法獲得資料的類別數量作為選擇k值的參考 選擇較大的k可以降低資料的誤差,但會增加過擬合的風險。k mean演算法如下 1 隨機選取k個初始...

K Means聚類演算法

k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...

聚類演算法 K means

演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...