本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。