本文简要介绍python语言中 sklearn.feature_extraction.text.TfidfTransformer
的用法。
用法:
class sklearn.feature_extraction.text.TfidfTransformer(*, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)
将计数矩阵转换为标准化的 tf 或 tf-idf 表示。
Tf 表示term-frequency,而tf-idf 表示term-frequency 乘以倒数document-frequency。这是信息检索中常见的术语加权方案,在文档分类中也有很好的用途。
使用tf-idf而不是给定文档中令牌的原始出现频率的目的是缩小在给定语料库中非常频繁出现的令牌的影响,因此从经验上讲,这些令牌的信息量比出现在训练语料库的一小部分。
用于计算文档集中文档 d 的术语 t 的 tf-idf 的公式为 tf-idf(t, d) = tf(t, d) * idf(t),计算 idf as idf(t) = log [ n /df(t) ] + 1 (如果
smooth_idf=False
),其中n是文档集中的文档总数,df(t)是t的文档频率;文档频率是文档集中包含术语 t 的文档的数量。将“1” 添加到上述等式中的 idf 的效果是不会完全忽略具有零 idf 的术语,即出现在训练集中所有文档中的术语。 (请注意,上面的 idf 公式不同于将 idf 定义为 idf(t) = log [ n /(df(t) + 1) ] 的标准教科书符号)。如果
smooth_idf=True
(默认),常数“1”被添加到idf的分子和分母,就好像看到一个额外的文档包含集合中的每个术语恰好一次,这可以防止零除法:idf(t) =日志 [ (1 + n) /(1 + df(t)) ] + 1。此外,用于计算 tf 和 idf 的公式取决于与 IR 中使用的 SMART 表示法相对应的参数设置,如下所示:
Tf 默认为 “n”(自然),当
sublinear_tf=True
时为 “l”(对数)。当给定 use_idf 时,Idf 为 “t”,否则为 “n”(无)。归一化在norm='l2'
时为 “c”(余弦),在norm=None
时为 “n”(无)。在用户指南中阅读更多信息。
- norm:{‘l1’, ‘l2’},默认='l2'
每个输出行都有单位范数,或者:
- ‘l2’:向量元素的平方和为 1。当应用 l2 范数时,两个向量之间的余弦相似度是它们的点积。
- ‘l1’:向量元素的绝对值之和为 1。参见
preprocessing.normalize
。
- use_idf:布尔,默认=真
启用 inverse-document-frequency 重新加权。如果为假,则 idf(t) = 1。
- smooth_idf:布尔,默认=真
通过在文档频率上加一来平滑 idf 权重,就好像看到一个额外的文档包含集合中的每个术语恰好一次。防止零分裂。
- sublinear_tf:布尔,默认=假
应用次线性 tf 缩放,即将 tf 替换为 1 + log(tf)。
idf_
形状数组(n_features)逆文档频率向量,仅在
use_idf=True
时定义。- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
参考:
- 耶茨2011
R.Baeza-Yates 和 B.Ribeiro-Neto(2011 年)。现代信息检索。艾迪生卫斯理,第 68-74 页。
- MRS2008
光盘。 Manning、P. Raghavan 和 H. Schütze(2008 年)。信息检索导论。剑桥大学出版社,第 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)
相关用法
- Python sklearn TfidfVectorizer用法及代码示例
- Python sklearn TweedieRegressor用法及代码示例
- Python sklearn TSNE用法及代码示例
- Python sklearn TheilSenRegressor用法及代码示例
- Python sklearn TruncatedSVD用法及代码示例
- Python sklearn TransformedTargetRegressor用法及代码示例
- Python sklearn TimeSeriesSplit用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
- Python sklearn train_test_split用法及代码示例
- Python sklearn RandomTreesEmbedding用法及代码示例
- Python sklearn GradientBoostingRegressor用法及代码示例
- Python sklearn GridSearchCV用法及代码示例
- Python sklearn log_loss用法及代码示例
- Python sklearn r2_score用法及代码示例
- Python sklearn ndcg_score用法及代码示例
- Python sklearn ShrunkCovariance用法及代码示例
- Python sklearn SelfTrainingClassifier用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.feature_extraction.text.TfidfTransformer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。