我通常的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技术,但我想应用这一技术。

最佳答案

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

关于matlab - 如何在MATLAB中执行分层10倍交叉验证以进行分类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45228163/

10-12 18:59