2017-07-21 2 views
0

Ma mise en œuvre de la validation croisée habituelle K fois est à peu près comme:Comment effectuer une validation croisée stratifiée 10 fois pour la classification dans MATLAB?

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 

Mais pour faire en sorte que la formation, les tests et la validation de jeu de données ont des proportions similaires de classes (par exemple, 20 classes) .Je souhaite utiliser l'échantillonnage stratifié technique.Le but de base est d'éviter le problème de déséquilibre de classe. Je sais à propos de la technique SMOTE mais je veux appliquer celui-ci.

Répondre

1

Vous pouvez simplement utiliser crossvalind('Kfold', Group, K), où Group est le vecteur contenant l'étiquette de classe pour chaque observation. Cela conduira à des ensembles où chaque groupe est proportionnellement abondant.

+0

proportion de classe .My est comme cette valeur Nombre Pourcentage classe 1: 3745 (65,11%) classe 2: 728 (14,90%) classe 3: 943 (20,00%) –