Python Scikit-调用sklearn.metrics.precision_recall_curve时输入形状错



我正在尝试为CatBoostClassifier构建PRC(精度召回曲线(。

但当我打给sklearn.metrics.precision_recall_curve(y_test, y_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)

//以下是我如何构建模型

model = CatBoostClassifier( 
iterations=50, 
random_seed=63, 
learning_rate=0.15, 
custom_loss=['Accuracy', 'Precision', 'Recall', 'AUC']
) 
model.fit( 
X_train, y_train, 
cat_features=cat_features, 
eval_set=(X_test, y_test), 
verbose=10, 
plot=True 
);   

简单的答案是CatBoostClassifier.model.predict_proba返回一个2d数组;sklearn.model.precision_recall_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])

最新更新