首页 > 解决方案 > 一类 SVM 无法对训练集进行分类

问题描述

我目前正在开展一个项目,将时间序列的窗口分类为 OCSVM 的大纲/内联。在进行一些测试时,我偶然发现了以下问题/问题:

>>> from sklearn import svm
>>> train = [(0,0,0),(0,0,1),(1,1,1)]
... 
>>> clf = svm.OneClassSVM()
... 
>>> clf.fit(train)
OneClassSVM(cache_size=200, coef0=0.0, degree=3, gamma='auto', kernel='rbf',
      max_iter=-1, nu=0.5, random_state=None, shrinking=True, tol=0.001,
      verbose=False)
>>> clf.predict(train)
array([-1, -1,  1])

为什么分类器在这里失败?-1 表示大纲...但我预测训练集?所以一切都应该是1(内联)。

我想念什么?有任何想法吗?

此致

标签: machine-learningclassificationsvm

解决方案


查看文档,似乎nu默认为 0.5 的参数给出了训练错误和支持向量的界限,并且由于 0.5*3(训练示例)为 1.5,因此训练继续进行,直到有一个或两个示例正确分类。

调整nu值应该可以帮助您分类更多点,但您可能会面临过度拟合的风险。


推荐阅读