• 大小: 11KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: Matlab
  • 标签:

资源简介

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

评论

共有 条评论

相关资源