【发布时间】:2018-01-05 03:42:31
【问题描述】:
我找到了sklearn.svm.LinearSVC 和sklearn.svm.SVC(kernel='linear'),它们看起来与我非常相似,但我在路透社上得到的结果却截然不同。
sklearn.svm.LinearSVC: 81.05% in 28.87s train / 9.71s test
sklearn.svm.SVC : 33.55% in 6536.53s train / 2418.62s test
两者都有一个线性内核。 LinearSVC的容差高于SVC的容差:
LinearSVC(C=1.0, tol=0.0001, max_iter=1000, penalty='l2', loss='squared_hinge', dual=True, multi_class='ovr', fit_intercept=True, intercept_scaling=1)
SVC (C=1.0, tol=0.001, max_iter=-1, shrinking=True, probability=False, cache_size=200, decision_function_shape=None)
这两个函数有何不同?即使我设置了kernel='linear、tol=0.0001、max_iter=1000 anddecision_function_shape='ovr'theSVCtakes much longer thanLinearSVC`。为什么?
我使用sklearn 0.18,两者都包含在OneVsRestClassifier 中。我不确定这是否与multi_class='ovr' / decision_function_shape='ovr' 相同。
【问题讨论】:
-
能不能升级到0.18.2,看看结果是不是还是不一样?
-
相信版本不是这样的。
sklearn文档包含拟合这些分类器的示例。结果因模型使用的方法而异。 -
已经有一些关于它的讨论,也许检查这些:stackoverflow.com/questions/33843981/… 和 stackoverflow.com/questions/35076586/…
-
文档说明他们使用不同的实现,甚至使用 sklearn 中的方法或直接访问低级实现也会导致不同的分数。
标签: scikit-learn svm