【问题标题】:How to use a cross validation test with MATLAB?如何在 MATLAB 中使用交叉验证测试?
【发布时间】:2011-01-24 16:41:07
【问题描述】:

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

【问题讨论】:

    标签: matlab machine-learning classification


    【解决方案1】:

    Statistics Toolbox中有CROSSVAL函数,默认执行10折交叉验证。看看吧。

    Bioinformatics Toolbox 中存在另一个函数CROSSVALIND

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      假设您想对正则化最小二乘执行 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); 
      

      【讨论】:

        猜你喜欢
        • 2015-09-06
        • 1970-01-01
        • 2015-05-27
        • 2014-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-24
        相关资源
        最近更新 更多