【问题标题】:libsvm: optimization finished, #iter = 1 nu = nanlibsvm:优化完成,#iter = 1 nu = nan
【发布时间】:2015-11-03 22:47:44
【问题描述】:

我在matlab中使用libsvm训练一个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,所以这个问题不是由不平衡的训练数据集引起的。我也尝试了其他内核,但它们都不起作用。

【问题讨论】:

  • 只是事后才想到,'-t 0'不是将最大迭代次数设置为零吗?或者这是一个不同的名称-值对?唉,我对 svmtrain 不是很熟悉。新工具箱很好用。
  • '-t 0' 表示选择线性内核,你可以在csie.ntu.edu.tw/~cjlin/libsvm找到这个

标签: matlab libsvm


【解决方案1】:

您不想再使用svmtrain。新版本是templatesvmfitcecoc 配对。这两个函数的数据页都相当广泛。

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

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

我使用的代码如下,其中trainingdata是我的5维训练数据,groups包含每个类的标签,对应于元胞数组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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
相关资源
最近更新 更多