2

我在 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 个交叉验证精度值)保存到文本文件中,以及是否可以将其写入我的代码中。

提前致谢,

安德里亚 C

4

2 回答 2

0

您可以使用 保存包含交叉验证结果的变量save,稍后使用load. 例如,假设您在名为 的变量中有结果accuracies

save('cross-validation-results.txt',accuracies);

然后

load('cross-validation-results.txt');

重新获得变量accuracies

要在您的代码中实现这一点,请将调整参数和相关的精度保存到数组中,然后保存所述数组。

于 2013-07-11T17:21:23.190 回答
0

我建议您save按照 Marc Claesen 的描述使用它。

不过,如果您只需要一种粗略、快速的方法来以某种方式保存您的值,您可以使用 matlabsdiary命令。

它将所有输入和输出保存到文本文件中。

diary('cross-validation-output.txt') 

要停止写入文件,您需要调用

diary OFF
于 2013-07-16T09:24:13.597 回答