2017年8月2日 星期三

機器學習_ML_TfidfVectorizer

機器學習_ML_TfidfVectorizer

仔細看會發現TfidfVectorizer跟CountVectorizer有許多相同的參數!
一般來說,TfidfVectorizer = CountVectorizer + TfidfTransformer,一般啦!

IMPORT

from sklearn.feature_extraction.text import TfidfVectorizer

CLASS

class sklearn.feature_extraction.text.TfidfVectorizer(
input='content', 
encoding='utf-8', 
decode_error='strict', 
strip_accents=None, 
lowercase=True, 
preprocessor=None, 
tokenizer=None, 
analyzer='word', 
stop_words=None, 
token_pattern='(?u)\b\w\w+\b', 
ngram_range=(1, 1), 
max_df=1.0, 
min_df=1, 
max_features=None, 
vocabulary=None, 
binary=False, 
dtype=<class 'numpy.int64'>, 
norm='l2', 
use_idf=True, 
smooth_idf=True, 
sublinear_tf=False)

參數說明

token_pattern

在另篇說明CountVectorizer的說明中,有一個範例print(count),就會把所有的預帶參數列出!
有發現到預設也是token_pattern=’(?u)\b\w\w+\b’

binary

default False {True, False}
這邊的設置,如果設置True的話,會發現列印出tf只會有0跟1。
就會是純詞頻,而不會是該詞在文件的總數!

use_idf

default True {True, False}
如果設置為False,則只計算純tf,不會做idf的計算!
其效果即同CountVectorizer。

smooth_idf

default True {True, False}
True idf=ln((文件總數+1)/(含該詞步的文件數+1))+1
False idf=ln(文件總數/含該詞步的文件數)+1
這部份在讀資料科學於商業應用的時候有提到,加1的目的在於淡化…什麼的我忘了!
需要再翻一下書!

sublinear_tf

default False {True, False}
True 則tf = 1 + log(tf)
這部份資料科學於商業應用的時候也有提到…
相同的來源設置True的情況下其準確率是有影響的
true:CV Accuracy: 0.824
false:CV Accuracy: 0.784

範例

再來補上!

沒有留言:

張貼留言