处理不平衡的数据集和交叉验证

时间:2019-03-20 12:12:15

标签: matlab dataset classification cross-validation pattern-recognition

我有一组脑肿瘤,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是如何工作的?我的意思是,它可以保证每次折叠都从两个类中获取实例吗?

0 个答案:

没有答案