微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多标签文本分类的分类报告?

如何解决多标签文本分类的分类报告?

我正在研究多标签文本分类。 我试图打印机器学习的分类报告,但只打印每个类。 我怎样才能得到所有班级的分类报告? 这部分代码

标签代码

categories = list(data_raw.columns.values)
categories = categories[1:]

评估:

def modelEvaluation(predictions,y_test_set):
    print("\nAccuracy on validation set: {:.4f}".format(accuracy_score(y_test_set,predictions)))
    print("\nClassification report : \n",metrics.classification_report(y_test_set,predictions))
    print("\nConfusion Matrix : \n",multilabel_confusion_matrix(y_test_set,predictions))

这对于机器学习

from sklearn.svm import LinearSVC


SVC_pipeline = Pipeline([
                    ('clf',OneVsRestClassifier(LinearSVC(),n_jobs=1)),])


for category in categories:
    printmd('**Processing {} comments...**'.format(category))
    
    # Training logistic regression model on train data
    SVC_pipeline.fit(x_train,train[category])
    
    # calculating test accuracy
    prediction = SVC_pipeline.predict(x_test)
    print('Test accuracy is {}'.format(accuracy_score(test[category],prediction)))
    print("\n")
    
    modelEvaluation(prediction,test[category])

如果我尝试像下面的代码那样单独打印分类报告,它会给我最后一堂课的结果

from sklearn.metrics import classification_report
print("\nClassification report : \n",metrics.classification_report(test[category],prediction))

解决方法

使用 without test[category] 并提供整个测试集,其中包含您为其构建模型的所有类。

print("\nClassification report : \n",metrics.classification_report(y_test,predictions))

其中 y_test 是测试集 X_test 的真实标签(真实输出)。

您正在通过测试集 (X_test) 而不是该测试集的标签 (y_test)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。