类型错误:classification_report() 需要 2 个位置参数,但给出了 3 个

问题描述 投票:0回答:3

返回metrics.classification_report(y_true, y_pred, labels, **kwargs) 类型错误:classification_report() 需要 2 个位置参数,但给出了 3 个

我们目前正在训练一个crf模型,我们想要获得指标的分类报告,但我们得到了这个错误。

我们尝试这样做:

从sklearn.metrics导入分类报告 打印(分类报告(y_test,y_pred,标签='标签'))

并收到此错误:

ValueError:您似乎正在使用旧的多标签数据表示形式。不再支持序列的序列;使用二进制数组或稀疏矩阵代替 - MultiLabelBinarizer 转换器可以转换为这种格式。

然后我们尝试将其转换为稀疏矩阵,并使用多标签二值化器,但没有任何效果。我们似乎无法弄清楚。有谁知道这是如何工作的?

# metrics on test dataset
print("For Testing Set: ")
print("F1 score:          {}".format(metrics.flat_f1_score(y_test, y_pred, average='weighted')))
print("Precision score:   {}".format(metrics.flat_precision_score(y_test, y_pred, average='weighted')))
print("Recall score:      {}".format(metrics.flat_recall_score(y_test, y_pred, average='weighted', labels='labels')))

print(metrics.flat_classification_report(y_test, y_pred, labels='labels', digits=3))

以上是我们的示例代码

python metrics multilabel-classification crf
3个回答
2
投票

您环境中的 scikit-learn 版本似乎可能会导致此问题。我在 Google Colab 上遇到了这个错误,在撰写本文时它使用 scikit-learn 版本 1.2.2。将 scikit-learn 降级到版本 0.24.2 后,我能够让

flat_classification_report()
正常工作。

这是我在 Colab 上降级 scikit-learn 包的命令:

!pip install --force-reinstall --no-dependencies "scikit-learn==0.24.2"

运行此命令后重新启动运行时。

如果您在本地计算机上训练模型,我认为重新安装或降级 scikit-learn 到版本 0.24.2 可以解决该问题。


0
投票

问题在 git 中提出 https://github.com/TeamHG-Memex/sklearn-crfsuite/issues/66

但是到现在还没有解决。 我可以选择: pip install git+https://github.com/MeMartijn/updated-sklearn-crfsuite.git#egg=sklearn_crfsuite。


0
投票

您可以直接调用sklearn分类报告,如下所示:

from sklearn_crfsuite import metrics    
from sklearn_crfsuite.utils import flatten
from sklearn import metrics as skmetrics

# Get data for X_test and y_test
# Load CRF Model

y_pred = crf.predict(X_test)
    
y_test_flat = flatten(y_test)
y_pred_flat = flatten(y_pred)
    
print(skmetrics.classification_report(y_test_flat, y_pred_flat))
© www.soinside.com 2019 - 2024. All rights reserved.