TfidfTransformer#

class sklearn.feature_extraction.text.TfidfTransformer(*, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)[源代码]#

将计数矩阵转换为规格化tf或tf-idf表示。

TF表示术语频率,而tf-idf表示术语频率乘以文档频率。这是信息检索中常见的术语加权方案,在文档分类中也有很好的用途。

使用tf-idf而不是给定文档中标记的原始出现频率的目标是缩小在给定数据库中非常频繁出现的标记的影响,因此从经验上看,这些标记的信息量低于训练数据库的一小部分中出现的特征。

用于计算文档集中文档d的项t的tf-idf的公式为tf-idf(t,d)= tf(t,d)* idf(t),并且idf计算为idf(t)= log [ n / df(t) ] + 1(如果 smooth_idf=False ),其中n是文档集中的文档总数,DF(t)是t的文档频率;文档频率是文档集中包含t项的文档的数量。在上面的等式中将“1”添加到idf为零的项,即,训练集中所有文档中出现的术语不会被完全忽视。(Note上面的idf公式与标准教科书符号不同,标准教科书符号将idf定义为idf(t)= log [ n / (df(t) + 1) ] ).

如果 smooth_idf=True (the默认),将常数“1”添加到idf的分子和分母,就像看到包含集合中每个项的额外文档恰好一次一样,这可以防止零除:idf(t)= log [ (1 + n) / (1 + df(t)) ] + 1.

此外,用于计算tf和idf的公式取决于与IR中使用的Smart符号相对应的参数设置,如下所示:

默认情况下,TF为“n”(自然),当情况下,TF为“l”(log) sublinear_tf=True .当给出use_idf时,Idf为“t”,否则为“n”(无)。归一化为“c”(余弦), norm='l2' 、“n”(无)时 norm=None .

阅读更多的 User Guide .

参数:
norm' l1 '、' l2 '或无,默认=' l2 '

每个输出行都将具有单位规范,其中之一:

  • ' l2 ':载体元素的平方和为1。当应用l2规范时,两个载体之间的cos相似度是它们的点积。

  • ' l1 ':载体元素绝对值之和为1。看到 normalize .

  • 无:没有正常化。

use_idf布尔,默认=True

启用逆文档频率重新加权。如果为False,则idf(t)= 1。

smooth_idf布尔,默认=True

通过在文档频率中添加一来平滑idf权重,就好像看到一个额外的文档恰好包含一次集合中的每个术语一样。防止零分裂。

sublinear_tf布尔,默认=假

应用次线性tf缩放,即用1 + log(tf)替换tf。

属性:
idf_形状数组(n_features)

逆文档频率(IDF)载体;仅在以下情况下定义 use_idf 是真的

Added in version 0.20.

n_features_in_int

期间看到的功能数量 fit .

Added in version 1.0.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

CountVectorizer

将文本转换为n元语法计数的稀疏矩阵。

TfidfVectorizer

将原始文档集合转换为TF-IDF功能矩阵。

HashingVectorizer

将文本文档集合转换为标记出现的矩阵。

引用

[Yates2011]

R.贝萨-耶茨和B。里贝罗-内托(2011)。现代信息检索。艾迪生·韦斯利,页。68-74.

[MRS2008]

C.D.曼宁、P. Raghavan和H. Schütze(2008)。信息检索简介。剑桥大学出版社,2001年. 118-120.

示例

>>> from sklearn.feature_extraction.text import TfidfTransformer
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> from sklearn.pipeline import Pipeline
>>> corpus = ['this is the first document',
...           'this document is the second document',
...           'and this is the third one',
...           'is this the first document']
>>> vocabulary = ['this', 'document', 'first', 'is', 'second', 'the',
...               'and', 'one']
>>> pipe = Pipeline([('count', CountVectorizer(vocabulary=vocabulary)),
...                  ('tfid', TfidfTransformer())]).fit(corpus)
>>> pipe['count'].transform(corpus).toarray()
array([[1, 1, 1, 1, 0, 1, 0, 0],
       [1, 2, 0, 1, 1, 1, 0, 0],
       [1, 0, 0, 1, 0, 1, 1, 1],
       [1, 1, 1, 1, 0, 1, 0, 0]])
>>> pipe['tfid'].idf_
array([1.        , 1.22314355, 1.51082562, 1.        , 1.91629073,
       1.        , 1.91629073, 1.91629073])
>>> pipe.transform(corpus).shape
(4, 8)
fit(X, y=None)[源代码]#

了解idf载体(全球术语权重)。

参数:
X形状稀疏矩阵(n_samples,n_features)

术语/代币计数矩阵。

y没有一

计算tf-idf时不需要此参数。

返回:
self对象

已安装Transformer。

fit_transform(X, y=None, **fit_params)[源代码]#

适应数据,然后对其进行转换。

适合变压器 Xy 具有可选参数 fit_params 并返回的转换版本 X .

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

y形状为(n_samples,)或(n_samples,n_outputs)的阵列状, 默认值=无

目标值(无监督转换)。

**fit_paramsdict

其他适合参数。

返回:
X_newndray形状数组(n_samples,n_features_new)

变形的数组。

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

参数:
input_features字符串或无的类数组,默认=无

输入功能。

  • 如果 input_featuresNone 那么 feature_names_in_ 在中用作功能名称。如果 feature_names_in_ 未定义,则生成以下输入要素名称: ["x0", "x1", ..., "x(n_features_in_ - 1)"] .

  • 如果 input_features 是一个类似阵列的,那么 input_features 必须匹配 feature_names_in_ 如果 feature_names_in_ 是定义的。

返回:
feature_names_out字符串对象的nd数组

与输入功能相同。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

set_output(*, transform=None)[源代码]#

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') TfidfTransformer[源代码]#

请求元数据传递给 transform

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 transform 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 transform .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
copy字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 copy 参数 transform .

返回:
self对象

更新的对象。

transform(X, copy=True)[源代码]#

将计数矩阵转换为tf或tf-idf表示。

参数:
X稀疏矩阵(n_samples,n_features)

术语/代币计数矩阵。

copy布尔,默认=True

是复制X并对副本进行操作,还是执行就地操作。 copy=False 仅对CSR稀疏矩阵有效。

返回:
vectors形状稀疏矩阵(n_samples,n_features)

Tf-idf加权文档术语矩阵。