当前位置: 首页 > 面试题库 >

使用sklearn.feature_extraction.text.TfidfVectorizer的tf-idf特征权重

施辉
2023-03-14
问题内容

本页:http :
//scikit-learn.org/stable/modules/feature_extraction.html提到:

由于tf–idf在文本功能中非常常用,因此还有另一个名为 TfidfVectorizer的 类,它将 CountVectorizer
TfidfTransformer的 所有选项 组合 在一个模型中。

然后我遵循了代码,并在我的语料库上使用fit_transform()。如何获得由fit_transform()计算的每个特征的权重?

我试过了:

In [39]: vectorizer.idf_
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-39-5475eefe04c0> in <module>()
----> 1 vectorizer.idf_

AttributeError: 'TfidfVectorizer' object has no attribute 'idf_'

但是缺少此属性。

谢谢


问题答案:

由于0.15版本,每个特征的TF-IDF评分可以通过属性来检索idf_所述的TfidfVectorizer对象:

from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["This is very strange",
          "This is very nice"]
vectorizer = TfidfVectorizer(min_df=1)
X = vectorizer.fit_transform(corpus)
idf = vectorizer.idf_
print dict(zip(vectorizer.get_feature_names(), idf))

输出:

{u'is': 1.0,
 u'nice': 1.4054651081081644,
 u'strange': 1.4054651081081644,
 u'this': 1.0,
 u'very': 1.0}

如评论中所述,在0.15版之前,一种解决方法是idf_通过所谓的矢量化程序隐藏的_tfidf(实例化TfidfTransformer)访问属性:

idf = vectorizer._tfidf.idf_
print dict(zip(vectorizer.get_feature_names(), idf))

它应该提供与上述相同的输出。



 类似资料:
  • 问题内容: 有在TF-IDF的实现和。 有简单的实现Python中的N-Gram,tf- idf和余弦相似性的简单实现 为了避免重新发明轮子, NLTK中真的没有TF-IDF吗? 是否有可用于在NLTK中实现TF-IDF的子包? 如果有怎么办? 在该博客文章中,NLTK没有它。 真的吗? http://www.bogotobogo.com/python/NLTK/tf_idf_with_sciki

  • 问题内容: 我正在处理高度不平衡的数据集,我的想法是从我的 libSVM 模型中获取特征权重的值。到目前为止,我对线性内核还可以,我可以在其中获得特征权重,但是当我使用或时,我无法达到目标。 在这里,我正在使用我的模型,并且可以使用轻松获得线性核的特征权重。谁能帮助我可以做同样的事情还是?到目前为止,我已尝试执行以下操作: 问题答案: 正如文档中所述,这不仅是不可能的: 权重分配给特征(原始问题的

  • 问题内容: 我正在寻找一个可以计算tf-idf计算的简单Java类。我想对2个文档进行相似性测试。我发现有很多使用tf-idf类的BIG API。我不想使用一个大的jar文件,只是为了进行简单的测试。请帮忙 !或者至少有人可以告诉我如何找到TF?和IDF?我将计算结果:)或如果您可以告诉我一些不错的Java教程。请不要告诉我寻找Google,我已经做了3天了,找不到任何东西:(请也不要把我引到Lu

  • TF-IDF TF-IDF(Term Frequency and Inverse Document Frequency),是一种用于信息检索与数据挖掘的常用加权技术。它的主要思想是:如果某个词或短语在一篇文章中出现的频率(term frequency)高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。 计算公式是TF * IDF 而这里的: scikit-lea

  • 我的情况是,我希望一些对象实现一个特征,比如说“基本”,而其他一些对象将实现一个特征“超级”。Super trait还必须是< code>T : Base的泛型,这样我就可以根据它所专用的Base自动实现Super的各个部分。现在,这似乎可以很好地处理下面的小例子 我的问题与我的下一个要求有关,那就是我希望能够存储实现Super的对象向量,而不管它专门用于哪个Base。我的想法是创建一个涵盖所有超

  • 将跟踪和跨度添加到Slf4J MDC,以便您可以从日志聚合器中的给定跟踪或跨度中提取所有日志。示例日志: 2016-02-02 15:30:57.902 INFO [bar,6bfd228dc00d216b,6bfd228dc00d216b,false] 23030 --- [nio-8081-exec-3] ... 2016-02-02 15:30:58.372 ERROR [bar,6bfd