【问题标题】:How to perform stratified 10 fold cross validation for classification in MATLAB?如何在 MATLAB 中对分类执行分层 10 折交叉验证?
【发布时间】:2017-12-26 22:40:39
【问题描述】:

我对常用的 K 折交叉验证的实现很像:

K = 10;
CrossValIndices = crossvalind('Kfold', size(B,2), K);

for i = 1: K
    display(['Cross validation, folds ' num2str(i)])
    IndicesI = CrossValIndices==i;
    TempInd = CrossValIndices;
    TempInd(IndicesI) = [];
    xTraining = B(:, CrossValIndices~=i);
    tTrain = T_new1(:, CrossValIndices~=i);

    xTest = B(:, CrossValIndices ==i);
    tTest = T_new1(:, CrossValIndices ==i);
end

但是为了确保训练、测试和验证数据集具有相似比例的类(例如,20 个类)。我想使用分层抽样 技术。基本目的是避免类不平衡问题。我知道 SMOTE 技术,但我想应用这个。

【问题讨论】:

    标签: matlab machine-learning cross-validation sampling


    【解决方案1】:

    您可以简单地使用crossvalind('Kfold', Group, K),其中Group 是包含每个观察的类标签的向量。这将导致每个组按比例丰富的集合。

    【讨论】:

    • .我的班级比例是这样的 Value Count Percent class 1 : 3745 (65.11%) class 2 : 728 (14.90%) class 3 : 943 (20.00%)
    猜你喜欢
    • 2012-05-11
    • 2016-04-15
    • 1970-01-01
    • 2015-06-01
    • 2012-11-01
    • 2011-11-29
    • 1970-01-01
    • 2015-12-13
    • 2020-02-10
    相关资源
    最近更新 更多