我正在使用高斯朴素贝叶斯从 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])
