matlab - Matlab中SVM分类的异常结果

标签 matlab matrix machine-learning classification svm

我正在尝试使用 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 无法处理与变量数量相比观测值非常少的数据集吗?

最佳答案

您可能需要找到 C(您所说的框约束)和 sigma 的组合来运行良好的 RBF 内核。这通常是通过交叉验证来完成的。即将训练数据分成两部分,对于框约束和 sigma 的每种组合,在一半上进行训练并在另一半上进行测试,在后一半上进行训练并在前一半上进行测试,对两个精度进行平均。用于测试获得最佳准确度的框约束和 sigma 组合。

这个问题涵盖了很多需要检查的事情Supprt Vector Machine works in matlab, doesn't work in c++

关于matlab - Matlab中SVM分类的异常结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241638/

相关文章:

matlab - 本质矩阵旋转角

matlab - 具有滑动窗口元素的矩阵

matrix - 奇异值分解

c++ - OpenGL glm::translate 没有像希望的那样翻译矩阵

python - 使用 Scikit Learn 进行部分依赖绘图时出现 ValueError

python - Keras自定义损失函数(弹性网络)

file - 如何导入/包含 MATLAB 函数?

matlab - 有没有一种在 matlab GUI 中显示 "table"的简单方法?

Matlab:向量矩阵的行列式

python - 使用 class_weight 来不平衡数据-.fit_generator()