【问题标题】:Understanding decision_function values了解 decision_function 值
【发布时间】:2018-06-22 07:50:33
【问题描述】:

我目前正在进行我的第一次机器学习,到目前为止,我还没有完全了解我从 decision_function(X) 获得的值的规模(也不知道如何理解它们)。

基于 sklearn documentation decision_function(X) 旨在:

预测样本的置信度分数。

不过,在运行以下脚本时:

from sklearn.datasets import fetch_mldata
import numpy as np
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import confusion_matrix , precision_score, recall_score


mnist = fetch_mldata('MNIST original')

classifier = SGDClassifier(random_state = 42, max_iter = 5)


X,y = mnist["data"], mnist["target"]
some_digit = X[36001]
some_digit_image = some_digit.reshape(28, 28)

X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]

random_order = np.random.permutation(60000)

X_train, y_train = X_train[random_order], y_train[random_order]

y_test_5 = (y_test == 5)
y_train_5 = (y_train == 5)


classifier.fit(X_train, y_train_5)
print(classifier.decision_function([X_test[1]]))

它为decision_function 打印出[-289809.39489525],此时我不确定如何阅读或评估这些值(我希望看到百分比)。如果有人可以向我解释这些读数的含义,将不胜感激。

非常感谢您。

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    如何获得概率(百分比)?

    使用predict_proba 方法。

    什么是decision_function

    由于SGDClassifier 是线性模型,decision_function 输出到分离超平面的有符号距离。这个数字只是 w,x> + b 或翻译成 scikit-learn 属性名称 coef_,x> + intercept_.

    【讨论】:

    • 那么我该如何阅读这些数字呢?他们越大,答案就越有信心?例如,在这种情况下[-289809.39489525] 模型对第一个值还是第二个值更有信心?
    • 你需要看标志。因此,在您的情况下,负号表明模型预测样本来自“非五”类。关于信心,越大(绝对值)越有信心。但是,为了通过 sigmoid 函数达到概率缩放,需要执行。
    • 是的,但是为什么要使用decision_function --- 除非与其他样本相比,否则实际值未标准化且无法完全解释。您似乎对最终概率感兴趣,所以我只需使用 predict_proba
    • 问题是我正在阅读 [shop.oreilly.com/product/0636920052289.do](book),它正在谈论 decision_function。所以我正在努力解决它。
    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2021-02-10
    • 2017-09-11
    • 2012-10-29
    • 2020-07-29
    • 2014-11-03
    相关资源
    最近更新 更多