【问题标题】:sklearn decision_function with 2 or more classes具有 2 个或更多类的 sklearn 决策函数
【发布时间】:2015-05-31 04:40:42
【问题描述】:

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

decision_function(X)

...

返回:array, shape=(n_samples,) if n_classes == 2 else (n_samples, n_classes) :

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

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

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

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

【问题讨论】:

    标签: python scikit-learn svm


    【解决方案1】:

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

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

    【讨论】:

    • 我的名字错了。决策函数的结果不是概率列表,而是到相关超平面的距离列表。具有两个以上类别的列表也有否定条目。这有什么改变吗?
    • @ArneRecknagel:我不熟悉LinearSVC 的该函数的输出格式,但如果这是定义,那么您可以在我的代码中将1 - probabilities 替换为-probabilities .
    猜你喜欢
    • 2017-08-13
    • 2014-05-13
    • 2019-03-04
    • 2023-03-07
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2016-11-01
    相关资源
    最近更新 更多