从文档 scikit-learn实现了SVC,NuSVC和LinearSVC,它们是能够对数据集执行多类分类的类.另一方面,我也读到了scikit学习也使用libsvm进行支持向量机算法.我对SVC和libsvm版本之间的区别有点困惑,现在我猜不同的是,SVC是多类问题的支持向量机算法,而libsvm是二进制类问题.有人能帮助我解决这个之间的区别吗?
根据我的研究,我发现了三个相互矛盾的结果:
有人能解释时要使用LinearSVC与SVC(kernel="linear")?
似乎LinearSVC略胜SVC并且通常更挑剔.但如果scikit决定花时间实施线性分类的具体案例,为什么不会LinearSVC超越SVC?
我发现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
Run Code Online (Sandbox Code Playgroud)
两者都有线性内核.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)
Run Code Online (Sandbox Code Playgroud)
两种功能如何区别?即使我设置kernel='linear,tol=0.0001,max_iter=1000 anddecision_function_shape = 'OVR' theSVC takes much longer thanLinearSVC`.为什么?
我使用sklearn 0.18,两者都包裹在OneVsRestClassifier.我不确定这是否与multi_class='ovr'/ 相同decision_function_shape='ovr'.
根据这篇文章,scikit learn 中的 SVC 和 LinearSVC 是非常不同的。但是在阅读官方的 scikit learn 文档时,就不是那么清楚了。
而这篇文章说 le 损失函数是不同的:
1/2||w||^2 + C SUM xi_i1/2||[w b]||^2 + C SUM xi_i似乎在 LinearSVC 的情况下,截距是正则化的,但官方文档另有说明。
有人有更多信息吗?谢谢
我正在使用scikit-learn的linearSVC分类器进行文本挖掘。我将y值作为标签0/1,将X值作为文本文档的TfidfVectorizer。
我使用如下所示的管道
pipeline = Pipeline([
('count_vectorizer', TfidfVectorizer(ngram_range=(1, 2))),
('classifier', LinearSVC())
])
Run Code Online (Sandbox Code Playgroud)
为了进行预测,我想获得置信度得分或数据点在(0,1)范围内被分类为1的概率
我目前使用决策功能
pipeline.decision_function(test_X)
Run Code Online (Sandbox Code Playgroud)
但是,它返回的正值和负值似乎表明置信度。我也不太清楚它们的含义。
但是,是否有办法获得0-1范围内的值?
例如,这是某些数据点的决策函数的输出
-0.40671879072078421,
-0.40671879072078421,
-0.64549376401063352,
-0.40610652684648957,
-0.40610652684648957,
-0.64549376401063352,
-0.64549376401063352,
-0.5468745098794594,
-0.33976011539714374,
0.36781572474117097,
-0.094943829974515004,
0.37728641897721765,
0.2856211778200019,
0.11775493140003235,
0.19387473663623439,
-0.062620918785563556,
-0.17080866610522819,
0.61791016307670399,
0.33631340372946961,
0.87081276844501176,
1.026991628346146,
0.092097790098391641,
-0.3266704728249083,
0.050368652422013376,
-0.046834129250376291,
Run Code Online (Sandbox Code Playgroud)