Scikit learn 在python中使用HashingVectorizer时如何获取功能名称?
我想制作一个2D二进制数组(n_样本,n_特征),其中每个样本是一个文本字符串,每个特征是一个单词(unigram) 问题是样本数量是350000,功能数量是40000,但我的RAM大小只有4GBScikit learn 在python中使用HashingVectorizer时如何获取功能名称?,scikit-learn,feature-extraction,Scikit Learn,Feature Extraction,我想制作一个2D二进制数组(n_样本,n_特征),其中每个样本是一个文本字符串,每个特征是一个单词(unigram) 问题是样本数量是350000,功能数量是40000,但我的RAM大小只有4GB 我在使用CountVectorizer后出现内存错误。那么,有没有其他方法(如迷你批量)来实现这一点 如果我使用HashingVectorizer,那么如何获取功能名称?i、 e.哪个列对应于哪个功能?,因为get_feature_names()方法在HashingVectorizer中不可用 小批量
partial_fit()
可供使用要获取HashingVectorizer的功能名称,您可以随机抽取文档样本,计算它们的哈希值,并通过这种方式了解哪个哈希值对应于哪个标记。它并不完美,因为可能存在与给定列相对应的其他标记,并且可能存在冲突,但这通常足以检查矢量化结果(或例如,使用散列特征的线性分类器的系数) 一个无耻的插件包实现了这一点:
from eli5.sklearn import InvertableHashingVectorizer
# vec should be a HashingVectorizer instance
ivec = InvertableHashingVectorizer(vec)
ivec.fit(docs_sample) # e.g. each 10-th or 100-th document
names = ivec.get_feature_names()
另请参见eli5文档中的:部分。的目的是在不存储特征名称的情况下获得合理的文本矢量表示。