我通常的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/