Python 什么';TfidVectorizer.transform([';word1 word2 word3';])返回的矩阵的平均值,以及它是如何计算的
为了获得tfidf maxtrix,我通过sklearn.feature_extraction.text.TfidfVectorizer培训了50000个文档Python 什么';TfidVectorizer.transform([';word1 word2 word3';])返回的矩阵的平均值,以及它是如何计算的,python,scikit-learn,tfidfvectorizer,Python,Scikit Learn,Tfidfvectorizer,为了获得tfidf maxtrix,我通过sklearn.feature_extraction.text.TfidfVectorizer培训了50000个文档 from sklearn.feature_extraction.text import TfidfVectorizer vec = TfidfVectorizer(stop_words=stop_words_file_list,smooth_idf=True) crops_vect = vec.fit_transform(crops).
from sklearn.feature_extraction.text import TfidfVectorizer
vec = TfidfVectorizer(stop_words=stop_words_file_list,smooth_idf=True)
crops_vect = vec.fit_transform(crops).toarray()
我知道crops_vect行是每个文档,列是从整个语料库中提取的单词,
例如crops_vect[document_id1]表示由语料库训练的tdidf构成的向量。
我的问题是,vec.transform(['america strong'].toarray()的意思是什么:
我查看了语料库中单词“strong”的向量
np.array([i for i in crops_vect.T[195997].toarray()[0] ])
>>>array([0., 0., 0., ..., 0., 0., 0.])
np.where(np.array([i for i in crops_vect.T[195997].toarray()[0] ]))
>>>array([ 20, 239, 250, 272, 303, 786, 797, 836, 924,
1202, 1218, 1613, 1645, 1651, 1662, 1670, 1673, 1688,
1691, 1697, 1721, 1728, 1766, 1780, 1849, 1935, 1975,
1988, 1999, 2017, 2018, 2199, 2344, 2354, 2721, 2752,
2775, 2785, 2788, 2809, 2818, 2826, 2830, 2841, 2844,
.....]
我的问题是:
1) 我知道向量变换(['strong']).toarray()!=crops_vect.T[195997]。toarray(),
什么是向量变换(['strong']).toarray()
2) 向量转换(['word1','word2'])代表什么,
是否等同于将新文档['word1','word2']添加到先前训练的tfidf矩阵,然后计算新文档的新tdidf矩阵
3) vec.transform(['word1','word2']),它如何在内部计算它
谢谢TFIDFvectorier(停止文字=停止文字\u文件\u列表,平滑\u idf=True)
因此,idf计算公式为:
idf(t) = log [ n / df(t) ] + 1
向量变换(['word1','word2'])是两个一个热向量垂直链接;
vec.transform(['word1 word2'])是一个由两个单词“word1 word2”组成的文档,计算训练文档中word1的df和word1的idf
计算df和idf,
最后正常化
v1/sqrt(v12+v22),v2/sqrt(v12+v22)我想我已经解决了这个问题。
idf(t) = log [ n / df(t) ] + 1