我正在研究 MATLAB LIBSVM 一段时间来进行预测。我有一个数据集,其中 75% 用于训练,15% 用于寻找最佳参数,其余用于测试。代码如下。
trainX and trainY are the input and output training instances
testValX and testValY are the validation dataset I use
for j = 1:100
for jj = 1:10
model(j,jj) = svmtrain(trainY,trainX,...
['-s 3 -t 2 -c ' num2str(j) ' -p 0.001 -g ' num2str(jj) '-v 5']);
[predicted_label, ~, ~]=svmpredict(testValY,...
testValX,model(j,jj));
MSE(j,jj) = sum(((predicted_label-testValY).^2)/2);
end
end
[min_val,min_indi] = min(MSE(:));
best_predicted_model_rbf(i) = model(min_indi);
我的问题是这是否正确。我正在创建具有不同 c 和 g 值的模型矩阵。我使用 -v 选项,这是这里的关键。从预测模型中,我使用验证数据集进行预测,并在那里计算均方误差。使用这个 MSE,我选择了最好的 c 和 g。由于我使用 -v 返回交叉验证的输出,所以我遵循的过程是否正确?