📄 classifierwrapper.m
字号:
% trains the classifier to distinguish between pairs of classes, computes% majority vote, and labels accordingly.% This is useful for classifiers such as Linear Discriminants, LS,% perceptron etc.% % Usage:% [train_error, test_error, estTrainLabels, estTestLabels] = ...% classifierWrapper(train_features, train_labels,classifier, params,test_features, test_labels)%% where% trainFeatures - the training set vectors, one vector per column% trainLabels - the labels of the above% classifier - the name of the classification routine% params - the parameters of the classifier% testFeatures - test set, one column per vector% testLabels - labels for test set%% Outputs% trainError - the error rate on the training set (one entry per% class + total error)% testError - the error rate on the test set (one entry per class% + total error)% estTrainLabels - the labels produced by the classifier on the% training set% estTestLabels - the labels produced by the classifier on the% training set%%function [trainError, testError, estTrainLabels, estTestLabels] = ... classifierWrapper(trainFeatures, trainLabels,classif, parameters,testFeatures, testLabels)hm = findobj('Tag', 'Messages'); fprintf('Performing pairwise classification\n');if (isempty(hm)==0) s = sprintf('Performing pairwise classification\n'); set(hm,'String',s); refresh; pause(1);end[Nclasses, classes] = find_classes([trainLabels(:);testLabels(:)]);% Number of classes in labels[Dim, NsamTrain] = size(trainFeatures);[Dim, NsamTest] = size(testFeatures);counts = zeros(Nclasses, NsamTrain+NsamTest);allFeatures = [trainFeatures testFeatures];allLabels = [trainLabels testLabels];for outclass =1:Nclasses-1, % extracts the outer class outclassIndex = find(trainLabels == classes(outclass)); outclassFeatures = trainFeatures(:,outclassIndex); outclassLabels = zeros (1, max(size(outclassFeatures))); % extracts the inner class for inclass = outclass+1:Nclasses, fprintf('Working on classes %d and %d\n',classes(outclass),classes(inclass)); if (isempty(hm)==0) s = sprintf('Working on classes %d and %d\n',classes(outclass),classes(inclass)); set(hm,'String',s); refresh; pause(.1); end inclassIndex = find(trainLabels == classes(inclass)); inclassFeatures = trainFeatures(:,inclassIndex); inclassLabels = ones (1, max(size(inclassFeatures))); pairFeatures = [outclassFeatures inclassFeatures]; pairLabels = [outclassLabels inclassLabels]; % classifies [foo, foo1, hatTrLab, hatAllLab] = feval(classif, pairFeatures, ... pairLabels,parameters, allFeatures, allLabels); % collects votes counts(inclass,:) = counts(inclass,:)+(hatAllLab(:))'; hatAllLab = 1-hatAllLab; counts(outclass,:) = counts(outclass,:) + (hatAllLab(:))'; endend[vals,indexes] = max(counts);vals = classes(indexes);estTrainLabels = vals(1:NsamTrain);estTestLabels = vals((NsamTrain+1):end);trainError = computeError(classes, trainLabels, estTrainLabels);testError = computeError(classes, testLabels , estTestLabels);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -