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