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個簇的質心的距離 歐式或者曼哈頓 取...