我正在尝试使用 SVM 从一个非常高维的数据集(一个3249X40
矩阵)中进行二进制分类。我有五个类似的数据集。虽然我从决策树中正确获得了结果(低但不同),但每次我可能使用的任何数据集都从 SVM 获得完全相同的结果。我以下列方式使用 svm:
svmModel = svmtrain(train_mat(trainIdx,:), groups(trainIdx), ...
'Autoscale',true, 'Showplot',false, 'Method','QP', ...
'BoxConstraint',2e-1, 'Kernel_Function','rbf', 'RBF_Sigma',1);
pred = svmclassify(svmModel, train_mat(testIdx,:), 'Showplot',false);
它出什么问题了?我正在使用这样的决策树:
tree=ClassificationTree.fit(train_mat(trainIdx,:),groups(trainIdx,:));
pred=tree.predict(train_mat(testIdx,:));
我从决策树中的这 5 个数据集中得到了不同的结果(看起来也正确)。怎么了?是因为 SVM 无法处理与变量数量相比观察值很少的数据集吗?