聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是:聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。
在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相似度計算方法有歐式距離法。
基本k-means
演算法的思想很簡單,事先確定常數
k,常數
k意味著最終的聚類類別數,首先隨機選定初始點為質心,並通過計算每乙個樣本與質心之間的相似度(這裡為歐式距離),將樣本點歸到最相似的類中,接著,重新計算每個類的質心(即為類中心),重複這樣的過程,知道質心不再改變,最終就確定了每個樣本所屬的類別以及每個類的質心。由於每次都要計算所有的樣本與每乙個質心之間的相似度,故在大規模的資料集上,
k-means
演算法的收斂速度比較慢。
輸出最終的質心以及每個類
對資料集進行測試
原始資料集
matlab**
主程式[plain]view plain
copy
%% input the data
a = load('testset.txt');
%% 計算質心
centroids = kmeans(a, 4);
隨機選取質心
[plain]view plain
copy
%% 取得隨機中心
function [ centroids ] = randcent( dataset, k )
[m,n] = size(dataset);%取得列數
centroids = zeros(k, n);
for j = 1:n
minj = min(dataset(:,j));
rangej = max(dataset(:,j))-min(dataset(:,j));
centroids(:,j) = minj+rand(k,1)*rangej;%產生區間上的隨機數
end
end
計算相似性
[plain]view plain
copy
function [ dist ] = distence( veca, vecb )
dist = (veca-vecb)*(veca-vecb)';%這裡取歐式距離的平方
end
kmeans的主程式
[plain]view plain
copy
%% kmeans的核心程式,不斷迭代求解聚類中心
function [ centroids ] = kmeans( dataset, k )
[m,n] = size(dataset);
%初始化聚類中心
centroids = randcent(dataset, k);
subcenter = zeros(m,2);%做乙個m*2的矩陣,第一列儲存類別,第二列儲存距離
change = 1;%判斷是否改變
while change == 1
change = 0;
%對每一組資料計算距離
for i = 1:m
mindist = inf;
minindex = 0;
for j = 1:k
dist= distence(dataset(i,:), centroids(j,:));
if dist
mindist = dist;
minindex = j;
end
end
if subcenter(i,1) ~= minindex
change = 1;
subcenter(i,:)=[minindex, mindist];
end
end
%對k類重新就算聚類中心
for j = 1:k
sum = zeros(1,n);
r = 0;%數量
for i = 1:m
if subcenter(i,1) == j
sum = sum + dataset(i,:);
r = r+1;
end
end
centroids(j,:) = sum./r;
end
end
%% 完成作圖
最終的聚類結果
簡單易學的機器學習演算法 極限學習機 ELM
極限學習機 extreme learning machine elm,是由黃廣斌提出來的求解單隱層神經網路的演算法。elm最大的特點是對於傳統的神經網路,尤其是單隱層前饋神經網路 slfns 在保證學習精度的前提下比傳統的學習演算法速度更快。elm是一種新型的快速學習演算法,對於單隱層神經網路,el...
簡單易學的git教程
學習難度有點大,一些理論比較難理解 集中式 分布式 建立乙個空目錄 在空目錄中執行git init命令 新建 修改或者刪除乙個檔案readme.txt 新建或者修改檔案時使用git add readme.txt 命令將檔案新增到暫存區 刪除檔案時使用git rm readme.txt將刪除修改新增到...
機器學習簡單演算法整理
今天整理了一下簡單的機器學習演算法。打算按照這個提綱學習 實現,不一定按順序,但希望自己每學習乙個都能了解透徹。打算寒假前就仔細研究這塊了。一 regression 回歸 二 基於例項的方法 三 regularazation 正則化方法 四 決策 decison 樹學習 五 bayesian 貝葉斯...