⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visual_2d_fisher_newlibsvm.m

📁 libsvm-demo,支持向量机的演示程序,对初学者很有用!
💻 M
字号:
function visual_2d_fisher_newlibsvm(posData, negData)

% Usages:
%  visual_2d_fisher_newlibsvm(posData, negData) project high-dimension data to a 2D
%  plot using Fisher discriminant analysis
%
% Inputs:
%  posData, negData = data in osu_svm style, made up of the row feature
%  vectors. 
%
% By Tian Tsong Ng, July 2005

C1 = posData;
C2 = negData;

casesN1 = size(C1,1);
casesN2 = size(C2,1);

% generate gaussian data

data = [C1; C2];
sampleSize = [casesN1,casesN2];

% findFLD2 - compute Fisher Linear Discriminant

m = mean(data,1);
Nsample = size(data,1);
data = data - m(ones(Nsample,1),:);

Nclass = length(sampleSize);

Ns = [0 , cumsum(sampleSize(:)')];

Sw = 0;
Sb = 0;

for count = 1:Nclass
    testData = data((Ns(count)+1):Ns(count+1),:);
    mc = mean(testData);
    Nc = size(testData,1);
    for n = 1:Nc
        Sw = Sw + (testData(n,:)-mc)'*(testData(n,:)-mc);
    end
    Sb = Sb + Nc*(mc-m)'*(mc-m);
end

mdim = size(Sw,1);

% for gray
Sw = Sw + 0.001*eye(mdim);

% for rgb
% Sw = Sw + 0.000001*eye(mdim);

% coef = 0.00001 is good

whos Sb Sw

[V,D,flag] = eigs(Sb,Sw,2);

d1 = V(:,1);
d1 = d1/sqrt(sum(d1.^2));

P1 = C1*d1;
N1 = C2*d1;

d2 = V(:,2);
d2 = d2 - (d2'*d1)*d1;
d2 = d2/sqrt(sum(d2.^2));

P2 = C1*d2;
N2 = C2*d2;

C{1} = [P1,P2];
C{2} = [N1,N2];

for n = 1:length(C)
    gM{n} = mean(C{n});
    gC{n} = cov(C{n});
end

symb = {'ob','or','bg'};

figure;
for n = 1:length(C)
    scatter(C{n}(:,1),C{n}(:,2),5,symb{n});
    hold on;
end

symb = {'b','k','g'};

for n = 1:length(C)
    gmmplot(gM{n},gC{n},1/length(C),[1 2],1,symb{n}); 
    hold on;
end

axis off

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -