相关疑难解决方法(0)

scikit-learn中SVC和SVM有什么区别?

文档 scikit-learn实现了SVC,NuSVC和LinearSVC,它们是能够对数据集执行多类分类的类.另一方面,我也读到了scikit学习也使用libsvm进行支持向量机算法.我对SVC和libsvm版本之间的区别有点困惑,现在我猜不同的是,SVC是多类问题的支持向量机算法,而libsvm是二进制类问题.有人能帮助我解决这个之间的区别吗?

machine-learning libsvm scikit-learn

26
推荐指数
2
解决办法
3万
查看次数

LInearSVC与SVC(内核='线性'):相互矛盾的论点?

根据我的研究,我发现了三个相互矛盾的结果:

  1. SVC(kernel="linear") 更好
  2. LinearSVC 更好
  3. 无所谓

有人能解释时要使用LinearSVCSVC(kernel="linear")

似乎LinearSVC略胜SVC并且通常更挑剔.但如果scikit决定花时间实施线性分类的具体案例,为什么不会LinearSVC超越SVC

machine-learning svm scikit-learn

20
推荐指数
2
解决办法
1万
查看次数

LinearSVC和SVC之间有什么区别(kernel ="linear")?

我发现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'.

svm scikit-learn

7
推荐指数
1
解决办法
5010
查看次数

scikit学习中的SVC vs LinearSVC:损失函数的差异

根据这篇文章,scikit learn 中的 SVC 和 LinearSVC 是非常不同的。但是在阅读官方的 scikit learn 文档时,就不是那么清楚了。

特别是对于损失函数,似乎有一个等价: 在此处输入图片说明

这篇文章说 le 损失函数是不同的:

  • SVC : 1/2||w||^2 + C SUM xi_i
  • 线性SVC: 1/2||[w b]||^2 + C SUM xi_i

似乎在 LinearSVC 的情况下,截距是正则化的,但官方文档另有说明。

有人有更多信息吗?谢谢

python svm libsvm scikit-learn

7
推荐指数
1
解决办法
431
查看次数

SK了解如何获取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)

python machine-learning svm scikit-learn

6
推荐指数
2
解决办法
8266
查看次数

标签 统计

scikit-learn ×5

svm ×4

machine-learning ×3

libsvm ×2

python ×2