资源简介
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 仿真代码
- 下一篇:图像数字水印
评论
共有 条评论