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

使用Bag of Words提取特征导致Google Colab运行崩溃该如何处理?

问题解答

你完全可以继续使用Bag of Words(词袋)或TF-IDF进行文本特征提取,当前内存溢出报错并非特征提取方法本身的问题,而是模型选型和稀疏矩阵处理方式不当导致的,可按以下方案调整:

1. 优先更换适配稀疏矩阵的模型

你当前使用的GaussianNB只支持稠密矩阵输入,调用toarray()会将原本只存非零值、内存占用极低的稀疏矩阵转换为保存所有零值的稠密矩阵,当文本词汇量较大时就会直接触发内存溢出。
优先替换为原生支持稀疏矩阵输入的朴素贝叶斯实现,无需调用toarray(),内存占用可降低90%以上:

from sklearn.naive_bayes import MultinomialNB

# 无需调用toarray(),直接传入稀疏矩阵
model = MultinomialNB()
model.fit(x_train_bg, y_train)
y_pred = model.predict(x_test_bg)

2. 若必须使用GaussianNB,先做特征维度压缩

如果业务场景必须使用高斯朴素贝叶斯,可先压缩词袋/TF-IDF的特征维度,再转稠密矩阵输入:

  • 调整特征提取器参数过滤无效特征:增加min_df参数过滤低频词,增加max_features参数限制最大特征数,直接减少特征维度
# 示例:只保留至少在3篇文档中出现过的词,最多保留8000个最高频特征
bag_of_words = CountVectorizer(min_df=3, max_features=8000)
x_train_bg = bag_of_words.fit_transform(x_train)
x_test_bg = bag_of_words.transform(x_test)
  • 对稀疏特征做降维处理:使用TruncatedSVD对稀疏特征做降维,将特征维度压缩到数百到数千量级后,再转稠密矩阵喂给GaussianNB。

3. 超大数据集适配方案

如果是千万级以上的超大规模文本数据集,可改用支持增量训练的HashingVectorizer做特征提取,搭配支持partial_fit的模型分批训练,无需一次性加载全量数据到内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:54:00