我使用高斯朴素贝叶斯从Pandas数据帧训练模型,但使用precision_recall_curve时出错。文件中说precision_recall_curve将预测的概率作为输入(至少在我阅读时是这样),所以我希望下面的方法能起作用(extrin和xtest分别是736行和184行的Pandas数据帧;ytrain/ytest分别是738行和184行的Series):
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])