问题描述
我正在研究多标签文本分类。 我试图打印机器学习的分类报告,但只打印每个类。 我怎样才能得到所有班级的分类报告? 这部分代码
此标签代码
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
)。