Python 什么';TfidVectorizer.transform([';word1 word2 word3';])返回的矩阵的平均值,以及它是如何计算的

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).

为了获得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).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