forked from OpenHUTB/utils
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconvertToSVMTrain.m
More file actions
49 lines (39 loc) · 1.42 KB
/
convertToSVMTrain.m
File metadata and controls
49 lines (39 loc) · 1.42 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
%% 将每个文件对应一个特征(1024x1)的文件所在的文件夹转化为
% C语言版的SVM能训练的输入数据格式:svmTrainData.txt
% ([label] [Index1]:[value1] [index2]:[value2] [index3]:[value3])
% 1 1:0.280000 2:0.330000
featureFiles = dir('D:\tmp\feature_label');
DEBUG = false;
%%
if DEBUG
dirCnt = 10;
fileNum = dirCnt - 2;
else
dirCnt = length(featureFiles);
fileNum = length(featureFiles)-2; % 除去当前文件和上一文件夹
end
%%
trainData = zeros(fileNum, 1024);
fileCnt = 1;
trainDataFp = fopen('svmTrainData.txt', 'w'); % 新建并清空文件内容
% for fileIndex = 1 : length(featureFiles)
labelMap = containers.Map({'black', 'green', 'red', 'yellow'}, {'1', '2', '3', '4'});
for fileIndex = 1 : dirCnt
fileName = featureFiles(fileIndex).name;
if ~strcmp(fileName, '.') && ~strcmp(fileName, '..')
fileFullPath = fullfile(featureFiles(fileIndex).folder, fileName);
featureData = importdata(fileFullPath);
trainData(fileCnt, :) = featureData;
fileNameSplits = split(fileName, '_');
label{fileCnt} = char(fileNameSplits{1});
fprintf(trainDataFp, '%c', labelMap(label{fileCnt}));
for valueIndex = 1 : 1024
fprintf(trainDataFp, ' %d:%6f', valueIndex, featureData(valueIndex));
end
fprintf(trainDataFp, '\n');
fileCnt = fileCnt+1;
end
disp(fileIndex);
end
fclose(trainDataFp);
% label = label'; % 转置成列向量