【问题标题】:K-fold cross validationK折交叉验证
【发布时间】:2016-01-15 13:52:51
【问题描述】:

我如何对数据集执行 k 折交叉验证,比如 X。

我已经浏览了 matlab 站点,并尝试过对数据集 X 进行此操作。 以下是在集合 X 上进行 10 折交叉验证的代码。

c= cvcrossvalidate(X,'kFold',10);

这会创建一个对象c,但是我如何访问不同的部分并使用它们来测试我的分类器?各种文字都看不懂。

【问题讨论】:

    标签: matlab machine-learning


    【解决方案1】:

    按照这个:

    C = crossvalind('Kfold', X_label, 10);
    for i = 1:10                             
        Test = (C == i); 
        Train = ~Test;                  
        SVMStruct = svmtrain ( X (Train,:), X_label (Train,:));
        Result = svmclassify(SVMStruct, X (Test,:));
    end
    

    X_label = 你的数据标签。

    X = 你的数据集。

    【讨论】:

    • 为什么只对标签应用crossvalind..X呢?什么是 Test=(C==i);意思是..还有下一行..你能解释一下代码吗?
    • K-fold 是除了获得非常高的性能之外测试数据的最佳方式。它的工作原理如下: (1)- C 将携带一个数据标签和 10 个随机样本(用于测试)。 (2)- 在循环内部,让变量Test 从C 中的随机10 个样本中抽取一个样本。 (3)- Train = ~Test 表示使用所有其他数据(Test 中的样本除外)作为训练数据。因此,Test 中只有一个样本,Train 中的所有其他样本。下一个循环将选择新样本作为Test 和其他样本作为Train >> 并像这样进行。祝你好运
    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 2016-12-15
    • 2018-08-29
    • 2017-06-09
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多