具有2个或更多类的sklearn decision_function

时间:2015-05-30 20:12:30

标签: python scikit-learn svm

我有一个基于LinearSVC的模型,并且具有可变数量的类。对于类== 2且类>的情况,决策函数具有不同的输出。 2:

  

decision_function(X)

     

...

     

返回:数组,shape =(n_samples,)如果n_classes == 2 else(n_samples,n_classes):

     

每个(样本,类别)组合的置信度分数。在二进制的情况下,self.classes_ [1]的置信度得分,其中> 0表示将预测此类。

我想在类== 2的情况下将输出转换为与其他情况相同的格式。但我可以直接在0处镜像条目吗?

probabilities = model.decision_function(X)
    if len(probabilities[0]) == 1:
        probabilities = [(-p, p) for p in probabilities]

根据我对SVM的理解,这应该是正确的。但是sklearn对此没有任何其他说法。

1 个答案:

答案 0 :(得分:1)

否定概率没有意义,你想要的可能是1 - p。此外,您需要创建ndarray,而不是对的列表:

prob2 = np.zeros((len(probabilities), 2))
prob2[:,0] = 1 - probabilities
prob2[:,1] = probabilities