【发布时间】:2014-04-19 18:11:51
【问题描述】:
我正在尝试合并这 2 位代码。我正在尝试使用平衡精度(BAC)而不是精度来选择参数。我已经下载了 libsvm 上的补码来处理平衡精度。
我用于参数选择的代码是:
prompt ='CROSS VALIDATION MAXIMUM STEP RANGE) ? ';
maxstep = input (prompt);
stepSize = 1;
log2c_list = -maxstep:stepSize:maxstep;
log2g_list = -maxstep:stepSize:maxstep;
maxc = max(log2c_list);
maxg = max(log2c_list);
numLog2c = length(log2c_list);
numLog2g = length(log2g_list);
cvMatrix = zeros(numLog2c,numLog2g);
bestcv = 0;
for i = 1:numLog2c
log2c = log2c_list(i);
for j = 1:numLog2g
log2g = log2g_list(j);
% -v 3 --> 3-fold cross validation
param = ['-q -v 3 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(class_vector_train, predictors_matrix_train, param);
cvMatrix(i,j) = cv;
if (cv >= bestcv),
bestcv = cv; bestLog2c = log2c; bestLog2g = log2g;
end
% fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
end
end
disp(['CV scale1: best log2c:',num2str(bestLog2c),' best log2g:',num2str(bestLog2g),' accuracy:',num2str(bestcv),'%']);
要获得我正在使用的天平精度:
do_binary_cross_validation(class_vector_train, predictors_matrix_train,'-c 1 -g 2',5);
model = svmtrain(class_vector_train, predictors_matrix_train);
[predicted_class_test, evaluation_results, decision_values] = do_binary_predict(class_vector_test, predictors_matrix_test, model);
但我找不到平衡的准确度度量。
【问题讨论】: