如何在Python中使用HashingVectorizer时获取特征名称?

deb*_*hya 5 feature-extraction scikit-learn

我想制作一个二维二进制数组(n_samples,n_features),其中每个样本都是一个文本字符串,每个特征都是一个单词(unigram)。

问题是样本数量是 350000,特征数量是 40000,但我的 RAM 大小只有 4GB。

  1. 使用 CountVectorizer 后出现内存错误。那么,还有其他方法(比如小批量)来做到这一点吗?

  2. 如果我使用 HashingVectorizer 那么如何获取 feature_names?即哪一列对应于哪一个特征?,因为 HashingVectorizer 中没有 get_feature_names() 方法。

Abh*_*kur 3

  1. countvectorizer 不支持小批量。但是,sklearn 的哈希向量化器partial_fit()可以使用。

  2. 引用 sklearn 文档“无法计算逆变换(从特征索引到字符串特征名称),这在尝试内省哪些特征对模型最重要时可能会出现问题。”