如何使用MATLAB进行交叉验证测试?

时间:2010-03-07 14:49:45

标签: matlab machine-learning classification

我想使用10倍交叉验证来评估MATLAB中的离散化。我应该首先考虑属性和类列。

3 个答案:

答案 0 :(得分:3)

在Statistics Toolbox中有CROSSVAL函数,默认情况下执行10次交叉验证。看看吧。

Bioinformatics Toolbox中存在另一个函数CROSSVALIND

还有一个开源的Generic-CV工具: http://www.cs.technion.ac.il/~ronbeg/gcv/

答案 1 :(得分:1)

如果您更愿意编写自己的xval包装而不是使用内置函数,我经常使用randperm()生成数据的随机排序,然后您可以使用90%(或您喜欢的值)截止值进行分区点。

答案 2 :(得分:0)

假设你想对正则化最小二乘法进行10倍交叉验证。

% Given X and y, where y = X*beta + noise. 
lambda_range = 0:0.5:10;
cv_MSE = zeros(size(lambda_range));
for i = 1:length(lambda_range)
   regf=@(X,y,Xtest)(Xtest*(inv(X'*X+lambda_range(i)*eye(size(X,2)))*X'*y));
   cv_MSE(i) = crossval('mse',X,y,'Predfun',regf,'kfold',10);
end
[~,idx]= min(cv_MSE);
lambda = lambda_range(idx);