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

TFIDFVectorizer拟合转换后导出邮件特征至Excel的实现方法

解决方案

要实现从TF-IDF稀疏矩阵中提取每封邮件的特征词并生成Excel报表,可按以下步骤操作:

步骤1:获取所有特征词列表

通过TfidfVectorizer实例的get_feature_names()方法,获取经过停用词去除、词形还原后的全部特征词:

feature_names = vec_body.get_feature_names()

步骤2:逐行提取单封邮件的特征词

遍历稀疏矩阵的每一行,定位非零元素对应的列索引,再映射到特征词并拼接成字符串:

import pandas as pd

email_features_list = []
# 遍历稀疏矩阵的每一行(对应每封邮件)
for row in X_train_features:
    # 获取当前行非零元素的列索引
    col_indices = row.nonzero()[1]
    # 通过索引匹配特征词,并用空格连接成字符串
    features = ' '.join([feature_names[idx] for idx in col_indices])
    email_features_list.append(features)

步骤3:生成Excel报表

将邮件正文与对应特征词组合成DataFrame,再导出为Excel文件:

# 构建符合要求的表格结构
df = pd.DataFrame({
    'email_body': X_train,
    'email features': email_features_list
})

# 导出到Excel,关闭行索引避免冗余内容
df.to_excel('email_features_verification.xlsx', index=False)

补充说明

  • 若运行时出现AttributeError: 'TfidfVectorizer' object has no attribute 'get_feature_names',可尝试替换为get_feature_names_out()(适配部分较新版本的scikit-learn)。
  • 稀疏矩阵的nonzero()方法返回两个数组,其中第二个数组是特征词的列索引,对应feature_names中的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:43:50