1
我正在使用高斯樸素貝葉斯訓練來自熊貓數據框的模型,但在使用precision_recall_curve時出現錯誤。文檔說precision_recall_curve將預測的概率作爲輸入(至少在我閱讀它時),所以我期望下面的工作(xtrain和xtest分別是736和184行的Pandas數據框; ytrain/ytest是736和184的Series分別行):輸入到precision_recall_curve - 預測或prediction_proba輸出?
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來達到這個目的?
我不知道那裏的230從何而來,但你應該不會使用在熊貓的數據結構scikit學習的估計。 scikit-learn預計NumPy慣例,Pandas違反其中一些規則(例如,通過將一維數組轉換爲列向量而不是行向量)。另外,這是一個二元分類任務嗎? –