Работа с несбалансированным набором данных и перекрестной проверкой - PullRequest
0 голосов
/ 20 марта 2019

У меня есть набор данных опухолей головного мозга, 700 злокачественных и 225 доброкачественных.И я хочу построить классификационную модель с использованием SVM, чтобы классифицировать типы опухолей на основе имеющихся у меня данных.Мой первый вопрос, считается ли это несбалансированным набором данных?если это так, следует ли мне выполнять занижение выборки для злокачественного класса?

Кроме того, правильно ли использовать приведенный ниже код для перекрестной проверки моего набора данных?ПРИМЕЧАНИЕ: группы = вектор меток экземпляров (отсортированные злокачественные 0, затем доброкачественные 1 с) data = матрица характеристик данных экземпляров

k=10;
cp = classperf(groups); 
cvFolds = crossvalind('Kfold', groups, k);   
 for i = 1:k                                 
  testIdx = (cvFolds == i);                %# get indices of test instances
  trainIdx = ~testIdx;                     %# get indices training instances


   svmModel = fitcsvm(data(trainIdx,:), groups(trainIdx), 
   'Standardize',true,'KernelFunction','RBF','KernelScale','auto');

  pred = predict(svmModel, meas(testIdx,:));
  cp = classperf(cp, pred, testIdx);
end

Я все еще не могу понять, как работает crossvalind?Я имею в виду, гарантирует ли это, что он берет экземпляры от обоих классов в каждом сгибе?

...