Skip to content

Commit baac49f

Browse files
committed
fix kernel kmeans
1 parent fe2fb4b commit baac49f

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

chapter06/knGauss.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
% K: nx x ny kernel matrix
99
% Written by Mo Chen ([email protected]).
1010
if nargin < 3
11-
s = 1;
11+
s = 0.4;
1212
end
1313

1414
if nargin < 2 || isempty(Y)

chapter06/knKmeans.m

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
function [label, energy] = knKmeans(K, init)
1+
function [label, model, energy] = knKmeans(X, init, kn)
22
% Perform kernel kmeans clustering.
33
% Input:
44
% K: n x n data matrix
@@ -10,6 +10,7 @@
1010
% Reference: Kernel Methods for Pattern Analysis
1111
% by John Shawe-Taylor, Nello Cristianini
1212
% Written by Mo Chen ([email protected]).
13+
K = kn(X,X);
1314
n = size(K,2);
1415
if numel(init)==1
1516
k = init;
@@ -26,4 +27,8 @@
2627
[val, label] = max(T-dot(T,E,2)/2,[],1);
2728
end
2829
energy = trace(K)-2*sum(val);
30+
model.kn = kn;
31+
model.label = label;
32+
model.X = X;
33+
2934

demo/ch06/knKmeans_demo.m

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
n = 200;
66
[X, y] = kmeansRnd(d,k,n);
77
init = ceil(k*rand(1,n));
8-
K = knLin(X,X);
9-
label = knKmeans(K,init);
8+
9+
label = knKmeans(X,init,@knLin);
1010

1111
label0 = kmeans(X,init);
1212
maxdiff(label,label0)
@@ -17,7 +17,6 @@
1717
X = [x1,x1+pi/2;
1818
x2,-x2];
1919

20-
K = knGauss(X,X,0.4);
21-
label = knKmeans(K,2);
20+
label = knKmeans(X,2,@knGauss);
2221
figure;
2322
plotClass(X,label);

0 commit comments

Comments
 (0)