3

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

4

3 回答 3

3

Statistics Toolbox 中有CROSSVAL函数,默认执行 10 折交叉验证。一探究竟。

Bioinformatics Toolbox 中存在另一个函数CROSSVALIND 。

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

于 2010-03-07T15:50:59.800 回答
1

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

于 2010-03-08T03:36:46.017 回答
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); 
于 2018-06-14T08:02:10.580 回答