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])