我有以下代码:
Accuracy=off(data,z)
for i=1:100
n = size(data,1);
data_rand = data(randperm(n),:);
m = ceil(n/20);
k = 1:m:n-m;
test = data_rand(k:k+m-1,:);
train = [data_rand(1:k-1,:); data_rand(k+m:end,:)];
%/ code to calculate auc
end
accuracy=mean(auc)
每次迭代都会更改train
和test
的值,因此每次都会更改auc
的值。
说最终结果为accuracy=0.7654
,另一时间为accuracy=0.6543
或accuracy=0.4657
。我想修改一个特定的结果,比如0.6543
,即如果我运行前面的代码多次,我想获得相同的结果(0.6543
)。
答案 0 :(得分:1)
您的问题是随机数生成器(RNG)。通过在声明for
循环后将rng('default')
设置为第一行来解决此问题。这迫使RNG始终在同一点开始。
seed
可以简单地选择:
seed = 4; %// starts the seed at 4
rng(seed);
您可以使用种子编号来查找哪个数字可以为您带来令人满意的排列。