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

如何找出Python中MultinomialNB分类器用于文本分类决策的词汇?

解决朴素贝叶斯文本分类中提取关键特征词汇的问题

问题核心

你使用MultinomialNB做二分类文本分类时,无法通过旧方法提取分类依赖的关键词汇,原因是:

  • 新版本scikit-learn中,CountVectorizer的get_feature_names()已被get_feature_names_out()替代
  • MultinomialNB在二分类场景下没有coef_属性,但可以通过feature_log_prob_获取特征的类别概率

解决方案步骤

1. 获取特征名称

用vec.get_feature_names_out()替代旧的get_feature_names(),得到所有词袋特征的名称列表。

2. 提取类别特征概率

MultinomialNB.feature_log_prob_是一个二维数组,形状为[类别数, 特征数],对应每个类别下各个特征的对数概率。对于你的二分类任务:

  • feature_log_prob_[0]:类别0(非恐怖袭击)的特征对数概率
  • feature_log_prob_[1]:类别1(恐怖袭击)的特征对数概率

3. 计算关键特征权重并排序

通过类别1的对数概率减去类别0的对数概率得到特征对恐怖袭击类的权重,权重越高说明该词汇越倾向于被分类为恐怖袭击相关;反之则倾向于非相关。

完整代码示例

# 导入必要库
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
import pandas as pd

# 原有代码:创建词袋
vec = CountVectorizer(
    ngram_range=(1, 3)
)

x_train = vec.fit_transform(df_train.clean_text)
x_test = vec.transform(df_test.clean_text)

y_train = df_train.terror
y_test = df_test.terror

# 训练模型
nb = MultinomialNB()
nb.fit(x_train, y_train)

# 提取关键特征词汇
# 1. 获取所有特征名称
feature_names = vec.get_feature_names_out()

# 2. 获取两个类别的特征对数概率
log_prob_class0 = nb.feature_log_prob_[0]
log_prob_class1 = nb.feature_log_prob_[1]

# 3. 计算特征对类别1的权重(类别1概率 - 类别0概率)
feature_weights = log_prob_class1 - log_prob_class0

# 4. 按权重排序,得到关键特征
# 倾向于恐怖袭击的词汇(权重从高到低)
top_terror_features = pd.DataFrame({
    'feature': feature_names,
    'weight': feature_weights
}).sort_values(by='weight', ascending=False).head(20)

# 倾向于非恐怖袭击的词汇(权重从低到高)
top_non_terror_features = pd.DataFrame({
    'feature': feature_names,
    'weight': feature_weights
}).sort_values(by='weight', ascending=True).head(20)

# 打印结果
print("最能代表恐怖袭击类的词汇:")
print(top_terror_features)

print("\n最能代表非恐怖袭击类的词汇:")
print(top_non_terror_features)

说明

  • feature_log_prob_是模型训练后计算的每个特征在对应类别下的概率对数,差异值直接反映了特征对类别的区分度
  • 你可以调整head(20)中的数字来获取更多或更少的关键特征
  • 如果想直接看类别1下概率最高的特征,也可以直接对log_prob_class1排序,无需计算差值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:11:07