我發現sklearn.svm.LinearSVC
和sklearn.svm.SVC(kernel='linear')
,他們看起來和我很相似,但我在路透社得到了非常不同的結果。LinearSVC和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 and
decision_function_shape ='ovr'the
SVC takes much longer than
LinearSVC`。爲什麼?
我用sklearn 0.18
,兩者都包裹在OneVsRestClassifier
。我不確定這是否與multi_class='ovr'
/decision_function_shape='ovr'
相同。
您可以升級到0.18.2並查看結果是否仍然不同? – sera
我相信版本不是這種情況。 'sklearn'文檔包含了擬合這些分類器的例子。結果會因模型使用的方法而有所不同。 –
已經有一些討論,可能檢查這些: https://stackoverflow.com/questions/33843981/under-what-parameters-are-svc-and-linearsvc-in-scikit-learn-equivalent 和 https://stackoverflow.com/questions/35076586/linearsvc-vs-svckernel-linear-conflicting-arguments – phev8