libsvm:优化完成,#iter = 1 nu = nan

libsvm: optimization finished, #iter = 1 nu = nan

我使用 libsvm 在 matlab 中训练一个 svm 模型,但是当我调用

model = svmtrain(labels,Feature,'-t 0');

它给了我这个结果:

*
optimization finished, #iter = 1
nu = nan
obj = nan, rho = nan
nSV = 0, nBSV = 0
Total nSV = 0

我的正样本和负样本的数量几乎相等:935 vs 904 所以这个问题不是由不平衡的训练数据集引起的。我还尝试了其他内核,其中 none 有效。

您不想再使用 svmtrain。新版本是 templatesvm paired with fitcecoc。这两个函数的数据页都非常广泛。

您最终会希望使用您的模型来预测其他数据,为此请使用 predict

我最近在尝试 class 化具有两个以上 class 的点云中的地形时遇到了类似的问题。 templatesvmfitcecoc 解决了我的问题。

我使用的代码如下,其中trainingdata是我的5维训练数据,groups包含每个class的标签,对应于元胞数组classes.

SVMtemp = templateSVM('KernelFunction','polynomial','IterationLimit',1e4,...
    'PolynomialOrder',4,'OutlierFraction',ExpOut,...
    'Standardize',true); % Create SVM template
Model =     fitcecoc(trainingdata(:,4:8),groups,'learners',SVMtemp,'ClassNames',...
    classes); % Create the SVM model