Skip to main content
 首页 » 编程设计

python之输入到 precision_recall_curve之predict 或 predict_proba 输出

2025年05月04日9sky-heaven

我正在使用高斯朴素贝叶斯从 Pandas 数据框训练模型,但在使用 precision_recall_curve 时出现错误。文档说 precision_recall_curve 将预测概率作为输入(至少在我阅读时是这样)所以我希望下面的工作(xtrain 和 xtest 是分别具有 736 行和 184 行的 Pandas 数据帧;ytrain/ytest 是具有 736 和 184 行的系列行):

nb = GaussianNB() 
nb.fit(xtrain, ytrain) 
predicted = nb.predict_proba(xtest) 
precision, recall, threshold = precision_recall_curve(ytest, predicted) 

我希望上面的方法能够工作,但是我收到一个“IndexError:索引 230 超出大小 184 的范围”。如果我改为:

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

然后就可以正常执行了。 184 是 xtest 和 ytest 中的行数,但 230 不是任何这些结构的维度。有人可以解释其中的区别或我应该如何为此目的使用 precision_recall_curve 吗?

请您参考如下方法:

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

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