聚類是針對給定的樣本,根據據他們特徵的相似度或者距離,將其歸併到若干個"類"或"簇"的資料分析問題。乙個類是樣本的乙個子集。直觀上,相似的樣本在相同的類,不相似的樣本分散在不同的類。目的是通過得到的"類"或"簇",來發現資料的特點或者對資料進行處理,在資料探勘、模式識別等領域有著廣泛的應用。屬於無監督學習,只是根據樣本的相似度或者距離將其進行劃分,而"類"或"簇"事先是不知道的。原理:
樣本集d
=d = \,x_\ldots\ldots\ x_\}
d=;聚類簇數kkk;
優點:原理簡單,實現容易,聚類效果中上(依賴k的選擇)
缺點:無法確定k的個數 (根據什麼指標確定k)
對離群點敏感 (容易導致中心點偏移)
演算法複雜度不易控制,迭代次數可能較(m可能會比較大);
區域性最優解而不是全域性優
結果不穩定
原理:優點:
相比較k-means方法k中心點正好可以解決k-means方法中雜訊敏感的 問題;
缺點:演算法複雜度進一步提公升;
clear
clc%初始化初見
% 第一組資料
mu1=[0
0];%均值
s1=[.10
;0.1]
;%協方差
data1=
mvnrnd
(mu1,s1,
100)
;%產生高斯分布資料
%第二組資料
mu2=
[1.25
1.25];
s2=[.10
;0.1]
;data2=
mvnrnd
(mu2,s2,
100)
;% 第三組資料
mu3=[-
1.25
1.25];
s3=[.10
;0.1]
;data3=
mvnrnd
(mu3,s3,
100)
;% 顯示資料
plot
(data1(:
,1),
data1(:
,2),
'b+');
hold on;
plot
(data2(:
,1),
data2(:
,2),
'r+');
plot
(data3(:
,1),
data3(:
,2),
'g+');
grid on;
title
('理想的聚類效果'
)% 三類資料合成
data=
[data1;data2;data3]
; n=3;
%設定聚類數目
[m,n]
=size
(data)
;pattern=
zeros
(m,n+1)
;center=
zeros
(n,n)
;%初始化聚類中心
pattern(:
,1:n)=
data(:
,:);
%第一次隨機產生聚類中心
for x=1:n
center
(x,:)=
data
(randi
(300,1
),:)
;end
%進入迭代
while
1distence=
zeros(1
,n);
num=
zeros(1
,n);
new_center=
zeros
(n,n)
;for x=1:m
for y=1:n
distence
(y)=
norm
(data
(x,:)-
center
(y,:))
;%計算到每個類的距離
end[
~, temp]
=min
(distence)
;%求最小的距離
pattern
(x,n+1)
=temp;
endk=0;
for y=1:n
for x=1:m
ifpattern
(x,n+1)
==y new_center
(y,:)=
new_center
(y,:)+
pattern
(x,1
:n);
num(y)
=num
(y)+1;
endend
new_center
(y,:)=
new_center
(y,:)/
num(y);if
norm
(new_center
(y,:)-
center
(y,:))
<
0.1 k=k+1;
endendif k==n
break
;else
center=new_center;
endend
[m, n]
=size
(pattern)
;%最後顯示聚類後的資料
figure;
hold on;
for i=1:m
ifpattern
(i,n)==1
plot
(pattern
(i,1),
pattern
(i,2),
'r*');
plot
(center(1
,1),
center(1
,2),
'ko');
elseif pattern
(i,n)==2
plot
(pattern
(i,1),
pattern
(i,2),
'g*');
plot
(center(2
,1),
center(2
,2),
'ko');
elseif pattern
(i,n)==3
plot
(pattern
(i,1),
pattern
(i,2),
'b*');
plot
(center(3
,1),
center(3
,2),
'ko');
endendtitle
('k-means聚類演算法的聚類結果'
無監督學習 K Means聚類
無監督學習 通過無標籤的資料,學習資料的分布或資料與資料之間的關係。1定義 根據資料的 相似性 將資料分為多類的過程。1.1.演算法模組 k means 近鄰傳播演算法 dbscan演算法,高斯混合模型 gmm 等。1.2.python庫 sklearn.cluster 1.3.k means聚類演...
無監督學習 K means聚類
先用圖來描述k means怎麼做的 對於如下資料 如果你想分成2類 k 2 演算法會隨機生成兩個聚類中心 然後會分別計算每個資料 綠點 與聚類中心的距離 一般是歐式距離 來決定屬於哪個類 距離哪個聚類中心近 這樣,就得到了資料的第一次分類,接下來演算法會計算已分類的資料的 中心 將它們作為新的聚類中...
無監督學習 聚類 K means聚類演算法
無監督學習 聚類 k means聚類演算法 以k為引數,把n個物件分為k個簇,使簇內具有較高相似度,簇間相似度較低 1.隨機選擇k個點作為初始聚類中心 2.根據剩下點與聚類中心的距離 預設就是歐氏距離 歸為最近的簇 3.對每個簇,計算所有點的均值作為新聚類中心 4.重複2 3直至聚類中心不變 31省...