You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python下Naive Bayes文本分类如何输出每条文本对应分类结果

实现方法

依赖安装

首先安装导出Excel需要的第三方库:

pip install pandas openpyxl

完整修改后代码

import sklearn.datasets as skd
import pandas as pd

categories = ['Dritte', 'EDT','EKN']
SAP_train = skd.load_files('C:/Users/s58916/PycharmProjects/textFiles/train/', categories= categories, encoding= 'ISO-8859-1')
SAP_test = skd.load_files('C:/Users/s58916/PycharmProjects/textFiles/test/', categories= categories, encoding= 'ISO-8859-1')

from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB

text_clf = Pipeline([('vect', TfidfVectorizer()),
                     ('clf', MultinomialNB()) ])

# 训练模型
text_clf.fit(SAP_train.data, SAP_train.target)
# 预测测试集结果
predicted = text_clf.predict(SAP_test.data)

from sklearn import metrics
import numpy as np

print('准确率为:' + str(np.mean(predicted == SAP_test.target)))
print(metrics.classification_report(SAP_test.target, predicted, target_names=SAP_test.target_names))
print(metrics.confusion_matrix(SAP_test.target, predicted))

# ---------- 新增导出分类结果代码 ----------
# 把模型输出的数字标签转换为对应分类名称
predicted_labels = [SAP_test.target_names[i] for i in predicted]
true_labels = [SAP_test.target_names[i] for i in SAP_test.target]

# 构造结果表,可根据需要调整保留的列
result = pd.DataFrame({
    "测试文本": SAP_test.data,
    "真实分类": true_labels,
    "预测分类": predicted_labels
})

# 导出为Excel,index=False表示不导出多余行号
result.to_excel("文本分类结果.xlsx", index=False, engine="openpyxl")
print("分类结果已导出到当前代码运行目录下的「文本分类结果.xlsx」")

补充说明

  • 如果你不需要在结果里保留测试文本、真实分类,直接删除pd.DataFrame构造函数里对应的字段即可
  • 如果打开Excel出现乱码,可以替换导出语句为导出csv格式:
result.to_csv("文本分类结果.csv", index=False, encoding="utf-8-sig")

内容的提问来源于stack exchange,提问作者shima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:24:03