k-means是聚類中的乙個十分經典的演算法,具體的思想可以參考andrew ng的講義《the k-means clustering algorithm》,這裡不再贅述。
需要用到matlab中的核心函式kmeans,具體用法可以參考matlab命令: doc kmeans
idx = kmeans(x,k)
[idx,c] = kmeans(x,k)
[idx,c,sumd] = kmeans(x,k)
[idx,c,sumd,d] = kmeans(x,k)
partitions the points in the n-by-p data matrixxintokclusters. rows of x correspond to points, columns correspond to variables.
n-by-1 vectoridxcontaining the cluster indices of each point.
k cluster centroid locations in the k-by-p matrixc.
within-cluster sums of point-to-centroid distances in the 1-by-k vectorsumd.
distances from each point to every centroid in the n-by-k matrixd.
還有一些可選的引數,包括:'distance', 'options', 'replicates'等。
'distance'表示距離,預設為歐幾里得距離,還包括絕對距離,cos距離,海明距離等。
'options'可以通過statset命令設定操作,例如顯示迭代的結果。
'replicates'用於設定重複聚類的次數。
下面給出乙個具體的例子:
x = [randn(100,2)+ones(100,2);randn(100,2)-ones(100,2)]; %待聚類樣本
opts = statset('display','final'); %設定'options',最後顯示迭代結果
[idx,ctrs] = kmeans(x,2, 'replicates',5, 'options',opts);%將x聚為兩類,進行5次,最後顯示5次聚類的結果
%下面為資料的視覺化,可以參考
plot(x(idx==1,1),x(idx==1,2),'r.','markersize',12)
hold on
plot(x(idx==2,1),x(idx==2,2),'b.','markersize',12)
plot(ctrs(:,1),ctrs(:,2),'kx','markersize',12,'linewidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko','markersize',12,'linewidth',2)
legend('cluster 1','cluster 2','centroids','location','nw')
kmeans聚類及Matlab實現
kmeans k均值聚類 是一種常用的聚類演算法,因其簡單且效能還算良好而受廣泛應用。kmeans聚類的中心思想是 確定k個類,計算模式特徵向量到每個聚類中心的 距離 將特徵向量歸併到距離最小的聚類中心所在的類中。把每一類的平均向量特徵的均值作為新的類心。最後,使得樣本與類均值的誤差平方和最小。步驟...
MATLAB實現Kmeans聚類演算法
這是我練習的第乙個機器學習的演算法,寫的比較簡單,肯定也有一些小錯誤。也參看了很多其他人的 現在貼出來算是我學習的乙個歷程啦。clear all close all clc data1 normrnd 0,0.25,100,2 生成符合 data2 normrnd 1.25,0.5,100,2 da...
Matlab實現K means聚類函式
function label my kmeans x,k m,n size x label zeros m,1 初始化label向量 u index randperm m,k 生成k個 1,m 範圍的隨機的不重複的正整數 u x u index,初始化均值向量 while true 迭代操作 dis...