如何用Scikit-learn生成三类情感分析的分类报告(含核心指标)
如何用Scikit-learn生成三类情感分析的分类报告
刚好我之前做过类似的多分类任务,Scikit-learn里的classification_report工具完全能满足你的需求,它会自动输出你要的精确率、召回率、准确率、支持度这些指标,针对三类分类任务也能完美适配。结合你给出的现有代码,我帮你整理出完整的实现步骤:
步骤1:导入所需的metrics工具
首先确保你已经导入了classification_report,和你已经在用的accuracy_score、confusion_matrix一起:
from sklearn import metrics
步骤2:在现有代码基础上添加分类报告生成逻辑
你的代码已经完成了模型训练和预测,只需要在得到y_pred之后,调用classification_report函数即可。为了让报告更直观,建议指定target_names参数对应你的三个类别(positive、negative、neutral):
# 你的现有代码 vec_clf = Pipeline([('vectorizer', vec), ('pac', svm_clf)]) vec_clf.fit(X_train.values.astype('U'), y_train.values.astype('U')) y_pred = vec_clf.predict(X_test.values.astype('U')) # 输出准确率(你已经写了,这里保留) print("SVM Accuracy-", metrics.accuracy_score(y_test, y_pred)) # 输出混淆矩阵(补全你没写完的部分) print("Confusion Matrix:\n", metrics.confusion_matrix(y_test, y_pred)) # 生成并输出分类报告 print("Classification Report:\n", metrics.classification_report( y_test, y_pred, target_names=["negative", "neutral", "positive"] # 按你实际类别顺序调整 ))
步骤3:解读分类报告的输出
运行上面的代码后,你会得到类似这样的输出(示例):
Classification Report: precision recall f1-score support negative 0.85 0.82 0.83 200 neutral 0.78 0.81 0.79 150 positive 0.90 0.88 0.89 250 accuracy 0.85 600 macro avg 0.84 0.84 0.84 600 weighted avg 0.85 0.85 0.85 600
- precision/recall:分别对应每个类别的精确率和召回率
- support:每个类别在测试集中的样本数量
- accuracy:整体的分类准确率
- macro avg:所有类别指标的算术平均值(不考虑样本量差异)
- weighted avg:按每个类别的样本数量加权后的平均值
这样就能完整获取你需要的所有指标啦,完全适配三类情感分析的分类任务。
内容的提问来源于stack exchange,提问作者Sadhana Singh
相关产品推荐
相关产品推荐

