如何查看经过Bernoulli分类器处理后各数据点的分类结果
解决方案
你代码中已经计算得到的y_pred_n变量就是测试集所有数据点的分类结果,每个位置的取值和docs_test_n、y_test_n的位置一一对应,你可以通过以下方式把样本原始内容、真实标签、预测结果对应查看:
1. 生成测试集分类结果对照表
通过pandas将相关信息拼接为表格,方便查看和导出:
import pandas as pd # 拼接测试集各维度信息 test_result = pd.DataFrame({ "样本文本": docs_test_n, "真实类别": y_test_n, "预测类别": y_pred_n, "预测为正类的概率": y_pred_prob_n }) # 打印前10条结果查看 print(test_result.head(10)) # 如需导出到本地文件可执行下面的代码 # test_result.to_csv("伯努利分类器测试集结果.csv", index=False, encoding="utf-8-sig")
如果需要单独查看分类错误的样本,可通过条件筛选实现:
# 筛选所有预测和真实标签不一致的样本 wrong_preds = test_result[test_result["真实类别"] != test_result["预测类别"]] print(wrong_preds)
2. 查看训练集的分类结果
如果需要查看模型在训练集上的每个样本分类结果,可直接对训练集特征调用预测方法:
# 计算训练集预测结果 y_pred_train = clf_n.predict(dtm_train_n) y_pred_train_prob = clf_n.predict_proba(dtm_train_n)[:, 1] # 生成训练集结果对照表 train_result = pd.DataFrame({ "样本文本": docs_train_n, "真实类别": y_train_n, "预测类别": y_pred_train, "预测为正类的概率": y_pred_train_prob }) print(train_result.head(10))
补充说明
- 预测结果数组的长度和对应数据集的样本数完全一致,数组第i个值就对应第i个样本的分类结果
- 如果你需要对新的未标注样本做分类,只需先对新文本做和训练流程一致的TF-IDF转换,再调用
clf_n.predict(转换后的特征)即可得到分类结果
内容的提问来源于stack exchange,提问作者Alokin
相关产品推荐
相关产品推荐

