📄 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 benignlength_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; endendclear 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 endendscore = f_SVM';recRate = (TP+TN)/length_test;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -