Python Scikit-调用sklearn.metrics.precision\u recall\u curve时输入形状不正确

Python Scikit-调用sklearn.metrics.precision\u recall\u curve时输入形状不正确,python,pandas,machine-learning,scikit-learn,jupyter-notebook,Python,Pandas,Machine Learning,Scikit Learn,Jupyter Notebook,我正在尝试为CatBoostClassifier构建一个PRC(精确召回曲线) 但是当我调用sklearn.metrics.precision\u recall\u curve(y\u test,y\u score)时,我得到了ValueError:bad input shape(11912,2) 我目前的方法有什么问题?我需要在这里修复什么才能提供正确的形状 import sklearn from sklearn import metrics y_score = model.predict

我正在尝试为
CatBoostClassifier
构建一个PRC(精确召回曲线)

但是当我调用
sklearn.metrics.precision\u recall\u curve(y\u test,y\u score)
时,我得到了
ValueError:bad input shape(11912,2)

我目前的方法有什么问题?我需要在这里修复什么才能提供正确的形状

import sklearn 
from sklearn import metrics 
y_score = model.predict_proba(X_test) 
prc_auc = sklearn.metrics.precision_recall_curve(y_test, y_score)
//下面是我如何建立一个模型


简单的答案是
CatBoostClassifier.model.predict\u proba
返回一个2d数组
sklearn.model.precision\u recall\u curve
需要一个1d数组(或一个带有一列的2d数组,以两者为准)

CatBoostClassifier
的文档说明
predict_proba()
返回
numpy.array
,并且没有提供有关此方法的其他信息。所以我现在讨厌这个包的文档

通过浏览一些注释不好的代码,我发现:

    if prediction_type == 'Probability':
        predictions = np.transpose([1 - predictions, predictions])
        return predictions
我猜第0列是0类的概率,第1列是1类的概率。因此,选择您的测试与之一致的内容,并仅使用该列

prc_auc = sklearn.metrics.precision_recall_curve(y_test, y_score[:, 1])

简单的答案是
CatBoostClassifier.model.predict\u proba
返回一个2d数组
sklearn.model.precision\u recall\u curve
需要一个1d数组(或一个带有一列的2d数组,以两者为准)

CatBoostClassifier
的文档说明
predict_proba()
返回
numpy.array
,并且没有提供有关此方法的其他信息。所以我现在讨厌这个包的文档

通过浏览一些注释不好的代码,我发现:

    if prediction_type == 'Probability':
        predictions = np.transpose([1 - predictions, predictions])
        return predictions
我猜第0列是0类的概率,第1列是1类的概率。因此,选择您的测试与之一致的内容,并仅使用该列

prc_auc = sklearn.metrics.precision_recall_curve(y_test, y_score[:, 1])