first draft for first deadline.
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
#train features using svm
|
||||
display("Train Features")
|
||||
page_screen_output(0);
|
||||
page_output_immediately(1);
|
||||
more off;
|
||||
|
||||
#load all features
|
||||
# features = [sampleLabel, classLabel, binMeans, rms, psd, windowMean, windowSTD, windowVariance, windowKurtosis, windowIQR];
|
||||
load "features.txt"; #matrix is also called features
|
||||
load "eval/512/features_512_xyz_nomag_psd18.txt"; #matrix is also called features
|
||||
|
||||
# split features into training and test features using leave-one-out method
|
||||
# class idx:
|
||||
@@ -13,37 +16,79 @@ load "features.txt"; #matrix is also called features
|
||||
# idx 4 -> situps
|
||||
# idx 5 -> jumpingjack
|
||||
|
||||
# define which sampleSet is used as testset and not for training.
|
||||
leaveOut = find(features(:,1) == 3 & features(:,2) == 2); #sampleset 3 class 2
|
||||
testFeatures = features(leaveOut, :); #set testSignal
|
||||
features(leaveOut,:) = []; #remove the testFeatures
|
||||
features(:,1) = []; #remove the sampleLabel
|
||||
#remove features for evaluation
|
||||
#features(:, 3:7) = []; #remove binMeans
|
||||
#features(:, 8:25) = []; #remove psd
|
||||
#features(:, 26) = []; #remove rms
|
||||
#features(:, 27:31) = []; #remove statistical stuff
|
||||
|
||||
# bring the feature matrix into libsvm format.
|
||||
# 1. the label vector:
|
||||
trainLabel = features(:,1);
|
||||
size(features, 2)
|
||||
|
||||
# 2. sparse matrix with every feature in one column:
|
||||
features(:,1) = []; #remove the classLabel
|
||||
trainFeatures = sparse(features);
|
||||
#samples_class = features(:,1:2);
|
||||
#for numClass = 1 : max(samples_class(:,2))
|
||||
# for numSample = 1 : max(samples_class(find(samples_class(:,2)==1),1))
|
||||
|
||||
t=cputime;
|
||||
|
||||
# before training we need to scale the feature values
|
||||
minimums = min(trainFeatures);
|
||||
ranges = max(trainFeatures) - minimums;
|
||||
# define which sampleSet is used as testset and not for training.
|
||||
leaveOut = randperm(length(features), 1000);
|
||||
|
||||
numSample = 2;
|
||||
numClass = 5;
|
||||
#leaveOut = find(features(:,1) == numSample & features(:,2) == numClass); #sampleset x class y
|
||||
testFeatures = features(leaveOut, :); #set testSignal
|
||||
features(leaveOut,:) = []; #remove the testFeatures
|
||||
features(:,1) = []; #remove the sampleLabel
|
||||
|
||||
|
||||
trainFeatures = (trainFeatures - repmat(minimums, size(trainFeatures, 1), 1)) ./ repmat(ranges, size(trainFeatures, 1), 1);
|
||||
# bring the feature matrix into libsvm format.
|
||||
# 1. the label vector:
|
||||
trainLabel = features(:,1);
|
||||
|
||||
# training: svm with default settings
|
||||
model = svmtrain(trainLabel, trainFeatures);
|
||||
# 2. sparse matrix with every feature in one column:
|
||||
features(:,1) = []; #remove the classLabel
|
||||
trainFeatures = sparse(features);
|
||||
|
||||
display("Classify Features")
|
||||
# for testing we need to scale again
|
||||
testLabel = testFeatures(:,2);
|
||||
testFeatures(:,1:2) = []; #remove the labels
|
||||
testFeatures = (testFeatures - repmat(minimums, size(testFeatures, 1), 1)) ./ repmat(ranges, size(testFeatures, 1), 1);
|
||||
|
||||
# classification
|
||||
[predict_label, accuracy, dec_values] = svmpredict(testLabel, testFeatures, model);
|
||||
#write out libsvm file
|
||||
#libsvmwrite(strcat("trainFeatures_512_", num2str(numClass), "_", num2str(numSample), ".txt"), trainLabel, trainFeatures);
|
||||
|
||||
# before training we need to scale the feature values
|
||||
minimums = min(trainFeatures);
|
||||
ranges = max(trainFeatures) - minimums;
|
||||
|
||||
trainFeatures = (trainFeatures - repmat(minimums, size(trainFeatures, 1), 1)) ./ repmat(ranges, size(trainFeatures, 1), 1);
|
||||
|
||||
# training: svm with default settings
|
||||
model = svmtrain(trainLabel, trainFeatures, '-h 0 -c 32768 -g 8 -q');
|
||||
|
||||
disp("Classify Features");
|
||||
# for testing we need to scale again
|
||||
testLabel = testFeatures(:,2);
|
||||
testFeatures(:,1:2) = []; #remove the labels
|
||||
testFeatures = sparse(testFeatures);
|
||||
|
||||
#write out libsvm file
|
||||
#libsvmwrite(strcat("testFeatures_512_", num2str(numClass), "_", num2str(numSample), ".txt"), testLabel, testFeatures);
|
||||
|
||||
testFeatures = (testFeatures - repmat(minimums, size(testFeatures, 1), 1)) ./ repmat(ranges, size(testFeatures, 1), 1);
|
||||
|
||||
# classification
|
||||
[predict_label, accuracy, dec_values] = svmpredict(testLabel, testFeatures, model);
|
||||
|
||||
|
||||
# get evaluation matrix
|
||||
evaluation = [];
|
||||
for i = 1:5
|
||||
for j = 1:5
|
||||
evaluation(i,j) = sum(testLabel == i & predict_label == j);
|
||||
end
|
||||
end
|
||||
disp(evaluation);
|
||||
|
||||
save evaluation_512.txt evaluation accuracy;
|
||||
|
||||
printf('Total cpu time: %f seconds\n', cputime-t);
|
||||
# end
|
||||
#end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user