SKLearn如何获取LinearSVC分类器的决策概率

我在使用scikit-learn的LinearSVC分类器进行文本挖掘。我的y值是一个0/1的标签,而X值是文本文档的TfidfVectorizer结果。

我使用了如下管道

 pipeline = Pipeline([    ('count_vectorizer',   TfidfVectorizer(ngram_range=(1, 2))),    ('classifier',         LinearSVC())  ])

对于预测,我希望获取一个数据点被分类为1的置信度分数或概率,范围在(0,1)之间

我目前使用的是决策函数功能

pipeline.decision_function(test_X)

然而,它返回的是正值和负值,似乎表示置信度,但我并不太确定这些值的含义。

但是,有没有办法将这些值转换到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, 

回答:

你不能做到这一点。但是你可以使用sklearn.svm.SVC,设置kernel='linear'probability=True

这样可能会运行得更久,但你可以通过使用predict_proba方法从这个分类器中获取概率。

clf=sklearn.svm.SVC(kernel='linear',probability=True)clf.fit(X,y)clf.predict_proba(X_test)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注