我有一些代码实现了naivebayes垃圾邮件分类器,并实现了CountVectorizer,就像这样
from sklearn.feature_extraction.text import CountVectorizer
vect=CountVectorizer(stop_words='english')
vect.fit(x_train)
vect.vocabulary_
x_train_transformed=vect.transform(x_train)
y_train_transformed=vect.transform(x_test)
print(type(x_train_transformed))
print(x_train_transformed)
在这里fit()的意义是什么?为什么我们只拟合 x_train 而不能拟合 x_test ,而是同时转换 x_train和x_test ?
我知道CountVectorizer的转换方法将数据帧转换成单词包(正如他们所说的那样),但是fit()方法的意义在这里是什么?
答案 0 :(得分:2)
如documentation所述,fit方法“学习原始文档中所有标记的词汇词典”,即它创建标记词典(默认情况下,标记是用空格分隔的单词和标点符号),将每个单个令牌映射到输出矩阵中的某个位置。拟合训练集并转换训练和测试集可确保给定一个单词,单词始终正确地映射在训练和测试集中的同一列上。