-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsvm.m
37 lines (32 loc) · 1.08 KB
/
svm.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
clear all;
% load('test.mat');
load _data/svmData;
kernel = 'linear';
data = svmData;
characteristics = [1:10 17:20]; % Characteristics columns
treshold = 1; pTrain = 0.8;
slice = 3000;
% class = separateClasses(annArray, "R*", "L*");
% svmData(class == 1, end) = 1;
% svmData(class == -1, end) = -1;
% svmData(class == 0,:) = [];
% paths(class == 0) = [];
% Prepare Data
[X, Y, idx] = prepareData(svmData, characteristics, slice);
paths = paths(idx);
% Train and Predict
trainId = separateTrainAndTest(Y, pTrain);
[Xtrain, Xpredict, Ytrain, Ypredict] = getTrainTestData(X, Y, trainId);
SVMModel = fitSVM(Xtrain, Ytrain, kernel, 0); % 0 to supress training output
tic
[label,score] = predict(SVMModel,Xpredict);
toc
% Testar a solução com o resto dos dados
[correct, correctId, noMansCorrect] = getPredictFit(...
Ypredict, label, score, treshold);
% Printar resultados casos testados
printPredictResults(score, correct, treshold);
printConfusionAndMetrics(label, Ypredict);
% plot Receiver Operating Characteristc
plotROC(Ypredict,score, -1)
trackErrors(correctId, paths(~trainId));