ldainsel.m

来自「Linear Discriminant Analysis in matlab」· M 代码 · 共 42 行

M
42
字号
function recog = ldainsel(feature, class, dim);
%LDAINSEL LDA for input selection

if nargin==0; selfdemo; return; end
if nargin<3, dim=size(feature,2); end

dataNum = size(feature,1);
dimNum = size(feature,2);
data = [feature, class];

fprintf('Leave-one-out analysis:\n');
fprintf('\tFull data:\n');
wrong = looknn(data); 
correct = size(data, 1) - wrong;
fprintf('\t\tLOO error count = %g\n', wrong);
fprintf('\t\tRecognition rate = %g/%g = %5.2f%%\n', correct, dataNum,...
	correct/dataNum*100);

recog = zeros(dimNum, 1);
newdata = lda(data);
for i = 1:dimNum,
	fprintf('\tPartial data after LDA (dimension = %g):\n', i);
	wrong = looknn([newdata(:, 1:i) newdata(:, end)]); 
	correct = size(data, 1) - wrong;
	recog(i) = correct/dataNum*100;
	fprintf('\t\tLOO error count = %g\n', wrong);
	fprintf('\t\tRecognition rate = %g/%g = %5.2f%%\n', correct, ...
		dataNum, recog(i));
end

% ====== Self demo
function selfdemo
load wine.dat;
feature = normal(wine(:,2:end));
class = wine(:,1);
dim = size(feature,2);
recog = feval(mfilename, feature, class, dim);
figure
plot(1:dim, recog, '-o');
xlabel('Dimensions used in LDA');
ylabel('Leave-one-out recognition rates');

⌨️ 快捷键说明

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