【问题标题】:Sklearn probability different inside functionSklearn概率不同内部函数
【发布时间】:2017-09-18 21:22:30
【问题描述】:

我试图理解为什么 sklearn 预测的输出在放入函数时会有所不同。

我有一个经过文本训练的朴素贝叶斯分类器,当我做出这样的预测时

examples = ['my favorite sport is probably baseball']
predictions = vec_clf.predict(examples)[0]
probs = vec_clf.predict_proba(examples)
m = np.max(probs)

print predictions,m

我得到了正确的预测结果。但是,如果我编写一个函数来执行此操作

def classify(input):

    predictions = vec_clf.predict(input)[0]
    probs = vec_clf.predict_proba(input)
    m = np.max(probs)

    return predictions,m

classify('my favorite sport is probably baseball')

它返回一个完全不同且非常错误的结果,具有不同的置信度和类别标签。为什么要这样做?

【问题讨论】:

    标签: python function scikit-learn


    【解决方案1】:

    在第一次尝试中,您将 字符串列表 传递给 model.predict_probamodel.predict(这是预期的),在后一次尝试中,您传递的是单个字符串。相反,传递一个字符串列表

    classify(['my favorite sport is probably baseball'])
    

    或将input 包装在函数内的列表中:

    def classify(input):
        input = [input]
        predictions = vec_clf.predict(input)[0]
        probs = vec_clf.predict_proba(input)
        m = np.max(probs)
    
        return predictions,m
    

    当你只传递一个字符串时,每个单独的字符都被解释为一个文档。所以,试着做:

    vec_clf.predict('my favorite sport is probably baseball')
    

    为了更好地了解发生了什么。

    【讨论】:

      猜你喜欢
      • 2015-05-04
      • 2015-02-13
      • 2019-11-20
      • 1970-01-01
      • 2018-01-18
      • 2023-04-04
      • 2013-12-24
      • 2018-09-06
      • 1970-01-01
      相关资源
      最近更新 更多