資源簡(jiǎn)介
密度聚類中的DBSCAN代碼,根據(jù)周志華的《機(jī)器學(xué)習(xí)》中的偽代碼編寫,直接調(diào)用就可以使用,內(nèi)部有注釋
代碼片段和文件信息
function?[kC]?=?DBSCAN(epsMinPtsD)
%?k?聚類個(gè)數(shù)
%?C?聚類得到的簇
%D?數(shù)據(jù)集
%eps??鄰域參數(shù)
%MinPts??領(lǐng)域參數(shù)
%設(shè)置參數(shù)
O?=?zeros(1?size(D?1));??????????????%核心對(duì)象集
C?=?cell(size(D1));???????????????????%聚類簇
%%?找出核心對(duì)象
d?=?zeros(size(D?1)?size(D?1));?
distance?=?‘euclidean‘;
for?i?=?1:size(D?1)
?????for?j?=?size(D?1):-1:i
????????if?pdist(D([i?j]:)distance)?<=?eps???%計(jì)算樣本行與行之間的距離,樣本之間的距離小于eps元素值為1,反之0
????????????d(i?j)?=?1;
????????end
????????d(j?i)?=?d(i?j);???%d為對(duì)稱矩陣
????end
????%d(ii)?=?0;
????if?sum(d(:i))?>=?MinPts
????????????O(i)?=?i;????????%找到核心對(duì)象
????end
end
%?O(O==0)?=?[];??%O中的元素去零
%?disp(O)
%%?找出由密度可達(dá)樣本生成的聚類簇
k?=??0;????????????????????????????????%初始化聚類簇?cái)?shù)
Tau?=?1:size(D?1);????????????????????%初始化未訪問(wèn)樣本集合
while?sum(O)?~=?0
????Tau_old?=?Tau;?????????????????????%記錄當(dāng)前未訪問(wèn)樣本集合
????%隨機(jī)選取一個(gè)核心對(duì)象j
????j?=?1;
????while?O(j)?==?0
????????j?=?j+1;
????end
????Q?=?zeros(1?size(
- 上一篇:一鍵生成窗戶
- 下一篇:模擬退火算法解決0-1背包問(wèn)題
評(píng)論
共有 條評(píng)論