如何在 MATLAB 中进行分层 10 倍交叉验证以进行分类?



我通常的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是包含每个观测值的类标签的向量。这将导致每个组按比例丰富的集合。

相关内容

最新更新