我在Matlab中运行脚本以获取矩阵的随机排列测试,以获得交叉验证准确度值。我的脚本如下:
%randperm
labels = [zeros(40,1); ones(40,1)];
for i = 1:500
p = labels(randperm(length(labels)));
end
bestcv = 0;
for log2c = -10:10,
for log2g = -10:10,
cmd = ['-s 0 -t 0 -v 20 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g) ' -q '];
cv = svmtrain(labels, p, cmd);
if (cv > bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
fprintf('%g %g %g (best c = %g, g = %g, rate = %g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
end
end
end
cmd = ['-s 0 -t 0 -c ', num2str(bestc), ' -g ', num2str(bestg)];
我想知道如何将输出(500个交叉验证准确度值)保存到文本文件中,以及是否可以将其写入我的代码中。
提前致谢,
Andrea C
答案 0 :(得分:0)
您可以使用save
保存包含交叉验证结果的变量,然后使用load
加载它们。例如,假设您在名为accuracies
的变量中包含结果:
save('cross-validation-results.txt',accuracies);
以后
load('cross-validation-results.txt');
重新获得变量accuracies
。
要在代码中实现此功能,请将调整参数和相关精度保存到数组中,然后保存所述数组。
答案 1 :(得分:0)
我建议您使用save
作为Marc Claesen描述的内容。
尽管如此,如果您只是需要一种原始的,快速的方式来保存您的值,您可以使用matlabs diary
命令。
它将所有输入和输出保存到文本文件中。
diary('cross-validation-output.txt')
要停止写入您需要致电的文件
diary OFF