資源簡介
Matlab實現(KNN)自適應譜聚類

代碼片段和文件信息
function?[sigma_matrix]=density_adaptive_sigma(datasigma_ksigma_type)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%???by?wangboajia?2017.4.14
%??input?????:??data?
%????????????????:?sigma_k近鄰數
%????????????????:sigma_type:輸入數據類型:---------字符型-----------KNN----->第K近鄰
%?????????????????????????????????????????????????????????????????????????????????????????-----------SNN----->第K近鄰+共享近鄰
%??????????????????????????????????????????????????????????????????---------數值型----------------------->直接賦值
%??output:sigma_matrix:輸出參數矩陣???????????????????????????????????????????????????????????????????????????????????????-
dataT?=?data‘;
[nd]?=?size(data);
dist_matrix?=?dist(dataT);
%?找到sigma_k近鄰
[value?index]?=?sort(dist_matrix?1);%按列從小到大重新排列value重排結果,index重排編號
KNNindex?=?index(2:sigma_k+1?:);%去掉自己0的編號K近鄰的的編號
KNNvalue?=?value(2:sigma_k+1?:);%去掉自己0的值
if?(ischar(sigma_type))
????if?strcmp(sigma_type‘KNN‘)
????????sigma_matrix=sigma_knn(KNNvaluesigma_kn);
????elseif??strcmp(sigma_type‘SNN‘)
????????sigma_matrix=sigma_snn(KNNvalueKNNindexsigma_kn);
????end
elseif?(?isnumeric(sigma_type))??
????????sigma_matrix=sigma_num(sigma_typen);
end
%----------------------------------------------------------------------------------------------------------------------------------
%某數據的第sigma_k個近鄰距離表示sigma
function?sigma_matrix=sigma_knn(KNNvaluesigma_kn)
sigma_knn_value?=?KNNvalue(sigma_k:);
sigma_matrix=sigma_knn_value‘*sigma_knn_value*2;
%----------------------------------------------------------------------------------------------------------------------------------
%某對數據的sigma_k個近鄰共享近鄰數
function?sigma_matrix=sigma_snn(KNNvalueKNNindexsigma_kn)
%%共享近鄰個數
sigma_snn=zeros(nn);
for?i?=?1:n-1
????for?j?=?i+1:n
????????sigma_snn(ij)?=?size(intersect(?KNNindex(:i)KNNindex(:j))1);
????end
end
temp?=?triu(sigma_snn);%取上三角函數
sigma_snn?=?temp?+?temp‘;
sigma_knn_value?=?KNNvalue(sigma_k:);
sigma_matrix=sigma_knn_value‘*sigma_knn_value*2.*(sigma_snn+1);
%------------------------------------------------------------------------------------------
%%統一賦初值
function?sigma_matrix=sigma_num(sigma_typen)
sigma_matrix=ones(nn);
sigma_matrix=sigma_matrix*sigma_type*sigma_type;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????977??2017-04-15?08:45??get_knn_distance.m
?????文件????????4548??2017-04-14?01:03??k_means.m
?????文件????????2164??2017-04-15?09:06??sc.m
?????文件?????????941??2017-04-15?10:41??testspectral.m
?????文件???????12454??2017-04-14?01:17??two.txt
?????文件????????2363??2017-04-15?10:56??density_adaptive_sigma.m
- 上一篇:模糊自適應PID控制的Matlab 仿真代碼
- 下一篇:圖像數字水印
評論
共有 條評論