聚類演算法是將大量資料以相似度為基礎形成若干類,使類內之間的資料最為相似,類間的資料相似度差別盡可能的大,屬於無監督學習。
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演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...