我发现sklearn.svm.LinearSVC
和sklearn.svm.SVC(kernel='linear')
非常相似,但在Reuters上的结果却截然不同。
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
和decision_function_shape='ovr'
设置为相同,SVC
的运行时间仍比LinearSVC
长得多。为什么?我使用的是
sklearn 0.18
,并且两者都包含在OneVsRestClassifier
中。我不确定这是否与multi_class='ovr'
/ decision_function_shape='ovr'
相同。
sklearn
文档包含了拟合这些分类器的示例。由于模型所采用的方法不同,因此结果也有所不同。 - E.Z