sklearn.feature_extraction

本文深入探讨了TF-IDF算法的原理与应用,包括词频(TF)和逆文档频率(IDF)的概念,以及如何使用sklearn库中的TfidfVectorizer进行文本特征提取。详细解释了参数设置如停用词列表、最大文档频率、最小文档频率和最大特征数的作用。
  • TF-IDF是Term Frequency - Inverse Document Frequency的缩写,即“词频-逆文本频率”。它由两部分组成,TF和IDF。IDF(x)=logNN(x)IDF(x) = log\frac{N}{N(x)}IDF(x)=logN(x)N
from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = = TfidfVectorizer(stop_words=stpwrdlst, sublinear_tf = True, max_df = 0.5)
vectorizer = tfidf.fit_transform(corpus)
 
  1. stop_words:string {‘english’}, list, or None(default)

    english,用于英语内建的停用词列表

    list,该列表被假定为包含停用词,列表中的所有词都将从令牌中删除

    None,不使用停用词

  2. max_df: float in range [0.0, 1.0] or int, optional, 1.0 by default

    当构建词汇表时,严格忽略高于给出阈值的文档频率的词条,语料指定的停用词。如果是浮点值,该参数代表文档的比例,整型绝对计数值。

  3. min_df:float in range [0.0, 1.0] or int, optional, 1.0 by default

    当构建词汇表时,严格忽略低于给出阈值的文档频率的词条,语料指定的停用词。如果是浮点值,该参数代表文档的比例,整型绝对计数值。

  4. max_features: optional, None by default

    构建一个词汇表,仅考虑max_features–按语料词频排序

`sklearn.feature_extraction.text` 库的主要作用是进行文本特征提取,即将文本数据转换为可用于机器学习模型处理的数值特征。该库提供了多种文本特征提取的类,常见的有 `CountVectorizer` 和 `TfidfVectorizer`,此外还有 `TfidfTransformer`、`HashingVectorizer` 等类 [^1]。 - **`CountVectorizer`**:用于将文本数据转换为词频矩阵,统计每个单词在文档中出现的次数。它可以通过 `fit_transform` 方法对文本数据进行处理,查看提取的特征单词可以使用 `get_feature_names` 方法。该类有多个参数,如 `ngram_range` 可用于指定提取 1 - grams 或 2 - grams 等不同范围的特征 [^1][^3]。 ```python from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?', ] vectorizer = CountVectorizer() X = vectorizer.fit_transform(corpus) print(vectorizer.get_feature_names_out()) print(X.toarray()) ``` - **`TfidfVectorizer`**:在 `CountVectorizer` 统计词频(TF)的基础上,加入了逆文档词频(IDF)的计算,使得重要的特征在特征矩阵中更加突出。它能有效减少常见词对模型的影响,提高模型的性能 [^4]。 ```python from sklearn.feature_extraction.text import TfidfVectorizer corpus = [ 'This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?', ] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(corpus) print(vectorizer.get_feature_names_out()) print(X.toarray()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值