www.pudn.com > kernelSVM.rar > SVM.m
function [recRate,score,TP,TN,FP,FN] = SVM (trainData,trainLable,testData,testLable,trainNum,testNum,...
kPar,C,kType)
%SVM: support vector machine
%input:
% trainData: data for training
% trainLable: training data's lable
% testData: data for testing
% testLable: testing data's lable
% trainNum: the former trainNum trainData are malignant,the others are
% benign
% testNum: the former testNum testData are malignant,the others are benign
% kPar: kernel function's parameter
% C: punish parameter
% kType: kernel function's type
%output:
% recRate: the recognize rate
% score: to produce ROC curve
% TP: true malignant
% TN: true benign
% FP: false malignant
% FN: false benign
length_train = size(trainData,2);
length_test = size(testData,2);
TP = 0;TN = 0;FP = 0;FN = 0;
trainData = trainData';
testData = testData';
Y = trainLable';
trainMalignant = trainData(1:trainNum,:);
trainBenign = trainData(trainNum+1:length_train,:);
% testMalignant = testData(1:testNum,:);
% testBenign = testData(testNum+1:length_test,:);
parameter = SVC_Fun(trainMalignant,trainBenign,trainNum,length_train-trainNum,kPar,C,kType);
index = find(parameter.alpha>0);
sup_vector = trainData(index,:);
mat_kernel = Kernel(testData,sup_vector,kType,kPar);
f_SVM = (mat_kernel*(parameter.alpha(index,:).*Y(index,:)))+parameter.b;
YY = sign(f_SVM);
for i=1:length_test
if YY(i)==0
YY(i) = 1;
end
end
clear i;
for i=1:length_test
if YY(i) == testLable(i)
if i<=testNum
TP = TP+1;
else
TN = TN+1;
end
else
if i<=testNum
FN = FN+1;
else
FP = FP+1;
end
end
end
score = f_SVM';
recRate = (TP+TN)/length_test;