繁体   English   中英

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

[英]Python Scikit - bad input shape when calling 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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM