Python 精度-回忆-曲线的输入-预测还是预测概率输出?

Python 精度-回忆-曲线的输入-预测还是预测概率输出?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我使用高斯朴素贝叶斯从熊猫数据帧训练模型,但在使用精度-召回曲线时,我得到了一个错误。文档中说,precision_recall_曲线将预测的概率作为输入(至少在我阅读时是这样),因此我希望下面的方法能够起作用(xtrain和xtest分别是736行和184行的熊猫数据帧;ytrain/ytest分别是736行和184行的序列): 我希望上述方法能够奏效,但是我收到了一个“IndexError:Index230超出大小184的范围”。如果我这样做: predicted = nb.predict(

我使用高斯朴素贝叶斯从熊猫数据帧训练模型,但在使用精度-召回曲线时,我得到了一个错误。文档中说,precision_recall_曲线将预测的概率作为输入(至少在我阅读时是这样),因此我希望下面的方法能够起作用(xtrain和xtest分别是736行和184行的熊猫数据帧;ytrain/ytest分别是736行和184行的序列):

我希望上述方法能够奏效,但是我收到了一个“IndexError:Index230超出大小184的范围”。如果我这样做:

predicted = nb.predict(xtest)
precision, recall, threshold = precision_recall_curve(ytest, predicted)

然后它正确地执行。184是xtest和ytest中的行数,但230不是这些结构中任何一个的维度。有人能解释一下这两者之间的区别,或者我应该如何使用精度回忆曲线来实现这一目的吗?

如果这是一个二元分类,请尝试使用以下方法:

predicted = nb.predict_proba(xtest)
precision, recall, threshold = precision_recall_curve(ytest, predicted[:,1])

我不知道230是从哪里来的,但是你真的不应该在熊猫数据结构上使用scikit学习估计器。scikit learn期望NumPy约定,而Pandas违反了其中一些约定(例如,将一维数组转换为列向量而不是行向量)。另外,这是一项二进制分类任务吗?
predicted = nb.predict_proba(xtest)
precision, recall, threshold = precision_recall_curve(ytest, predicted[:,1])