《機器學習練習》K means聚類演算法

2021-07-12 01:15:06 字數 2921 閱讀 7256

1:思想

k-means,屬於無監督學習。即輸入資料沒有標籤y,經過一些演算法後,找到標籤y。

聚類的目的就是找到每個樣本潛在的標籤y,並將同類別的樣本放到一起。

而k-means聚類:就是把n個點(可以是樣本的一次觀察或乙個例項)劃分到k個聚類中,

使得每個點都屬於離他最近的均值(此即聚類中心)對應的聚類,以之作為聚類的標準。

2:缺點

1)聚類數量k,需要輸入。選擇不恰當,聚類結果很糟糕。

2)收斂到區域性最優解,和直觀想象不一樣,這種可以多此選擇初始點,進行多次實驗,取平均來克服。

3:演算法

4:練習程式

clear all;

clc ;

%第一類資料

mu1=[0,0,0]; %%多維高斯向量均值

s1=[0.3 0 0;0 0.35 0;0 0 0.3];%%協方差分布

data1=mvnrnd(mu1,s1,100); %%產生高斯分布資料

%第二類資料

mu2=[1.25,1.25,1.25]; %%多維高斯向量均值

s2=[0.3 0 0;0 0.35 0;0 0 0.3];%%協方差分布

data2=mvnrnd(mu2,s2,100); %%產生高斯分布資料

%第三類資料

mu3=[-1.25,-1.25,-1.25]; %%多維高斯向量均值

s3=[0.3 0 0;0 0.35 0;0 0 0.3];%%協方差分布

data3=mvnrnd(mu3,s3,100); %%產生高斯分布資料

data=[data1;data2;data3]; %%原始資料

%%k-means聚類

[u]=kmeans(data,10); %

%%

%%顯示聚類後的資料

figure;

hold on;

plot3(data1(:,1),data1(:,2),data1(:,3),'co');

hold on

plot3(data2(:,1),data2(:,2),data2(:,3),'go');

hold on

plot3(data3(:,1),data3(:,2),data3(:,3),'bo');

hold on

plot3(u(:,1),u(:,2),u(:,3),'r+');

%%%data 資料  n質心數量  u聚類質心位置

function [u]=kmeans(data,n)

[m,n]=size(data); %% m是資料個數

maxtemp=zeros(n);

mintemp=zeros(n);

u=zeros(n,n); %%每一行表示乙個質心點

%%%初始化質心點

for i=1

:n maxtemp(i)=max(data(:,i)); %%第一列最大

mintemp(i)=min(data(:,i));

for j=1:n

u(j,i)=maxtemp(i)+(mintemp(i)-maxtemp(i))*rand();

endendeps=1;

indexdata=ones(m,1); %%存放質心:每個資料所對應的質心索引

while(eps>0.0001) %%%迭代更新質心位置

pre_u=u;

for i=1

:nfor j=1

:m temp(j,i)=norm(data(j,:)-u(i,:)); %%每乙個資料與n個質心比較 放到m*n矩陣裡

%%temp每一列表示資料離不同質心的距離

endendfor row=1

:m [value,index]=min(temp(row,:)); %%找到每一行的最小值的索引

indexdata(row)=index; %%把它對應的索引放到indexdata

end%%%計算新的質心位置

for i=1

:nzhixin=zeros(1,3);

count=0;

for j=1

:mif

indexdata(j)==i %%計算索引是i的資料點

zhixin=zhixin+data(j,:); %%質心的計算按照:所有座標點的平均值

count=count+1;

endend u(i,:)=zhixin/count;

endeps=norm(pre_u-u);

end

5:結果當聚類數量選則3,10的時候結果如下:其中,有的時候質心會不確定,程式沒有做優化處理。

機器學習筆記 kMeans聚類

優點 容易實現。缺點 可能收斂到區域性最小值,在大規模資料集上收斂較慢。適用資料型別 數值型資料 k 均值演算法 先隨機確定k個初始點作為質心,然後將資料集中的每個點分配到乙個簇中,具體來講為每個點找距其最近的質心,並將其分配給該質心所對應的簇。再每個簇更新質心為該簇所有點的平均值。import n...

機器學習之Kmeans聚類

本次學習總結 1 理解相似度度量的各種方法及其相互聯絡 2 掌握k means演算法思路及其使用條件 3 層次聚類的思路和方法 4 密度聚類並能夠應用於實踐 dbscan 密度最大值聚類 5 譜聚類演算法 譜聚類演算法與pca之間的關係 聚類的定義 聚類就是將大量未知標註的資料,按照資料的內在相似性...

機器學習之聚類演算法 K Means

參考 聚類演算法可以分為 中心點方法 層次聚類方法 基於密度方法 基於網格 基於模型方法。其中最為經典的是k means演算法 k means屬於中心點方法 也有叫劃分方法 演算法經典簡單。演算法 人工選取k值,並選取k個點作為k個簇的質心 對所有樣本分別計算到k個簇的質心的距離 歐式或者曼哈頓 取...