我通常的K-fold交叉验证的实现非常类似于:
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技术,但我想应用这个。
答案 0 :(得分:1)
您可以简单地使用crossvalind('Kfold', Group, K)
,其中Group
是包含每个观察的类标签的向量。这将导致每个组按比例丰富的集合。