無監督學習 聚類

2021-10-02 04:48:28 字數 3655 閱讀 6543

聚類是針對給定的樣本,根據據他們特徵的相似度或者距離,將其歸併到若干個"類"或"簇"的資料分析問題。乙個類是樣本的乙個子集。直觀上,相似的樣本在相同的類,不相似的樣本分散在不同的類。目的是通過得到的"類"或"簇",來發現資料的特點或者對資料進行處理,在資料探勘、模式識別等領域有著廣泛的應用。屬於無監督學習,只是根據樣本的相似度或者距離將其進行劃分,而"類"或"簇"事先是不知道的。

原理:

樣本集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省...