📄 kmeans_scan.m
字号:
function [center_new, J, class_label] = kmeans_scan(y, center, method)
%
%
%
%
[nr, nc] = size(y);
[k, c]= size(center);
class_label = zeros(1,nr);
%center_new = zeros(k,c);
%--------------------------------------------------------
% method ==1
% On-Line Updata center Algorithm
%-------------------------------------------------------
if method(1) == 1
for i= 1:1:nr
x= y(i, 1:c);
dmin= inf;
for j=1:1:k
d= sqrt((x- center(j,:))*(x-center(j,:))'/c);
if d < dmin
temp = j;
dmin = d;
end
end
class_label(i) = temp;
%-------------------------------------------------
n= 1;
for j =1:1:nr
if temp == class_label(j) n = n+1; end
end
center(temp,:) = center(temp,:) +(x- center(temp,:))/n;
%---------------------------------------------------------------
end
center_new = center;
%--------------------------------------------------------------------------
% method(1)==2
% Batch Update center Algorithm
%---------------------------------------------------------------------------
elseif method(1) == 2
for i= 1:1:nr
x= y(i, 1:c);
dmin= inf;
for j=1:1:k
d= sqrt((x- center(j,:))*(x-center(j,:))'/c);
if d < dmin
temp = j;
dmin = d;
end
end
class_label(i) = temp;
end
for i =1:1:k
n = 0;
x = zeros(1,c);
for j = 1:1:nr
if i == class_label(j)
n = n+1;
x = x + y(j, 1:c);
end
end
center_new(i,:) = center(i,:);
if n > 0
center_new(i,:) = x/n;
end
end
end
%-----------------------------------------------------------------
% J= SUM SUM(d(j,ecenter)) / N
if method(2) == 1
J= kmeans_evaluation1(y, class_label,k,c);
%-----------------------------------------------------------------
% J= SUM SUM(d(j,i)) /(N*( SUM (d(center(i),center(j))))
elseif method(2) == 2
J= kmeans_evaluation2(y, class_label, center_new,k ,c);
%---------------------------------------------------------------
% J= SUM SUM(d(j,ecenter)) /N
elseif method(2) == 3
J= kmeans_evaluation3(y, class_label, center_new);
%---------------------------------------------------------------
% J= SUM SUM(d(j,ecenter)) /(N*( SUM (d(center(i),center(j))))
elseif method(2) == 4
J= kmeans_evaluation4(y, class_label, center_new);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -