Sej*_*air 2 python vectorization scikit-learn
我已经使用python创建了一个文本分类模型.我有CountVectorizer,它产生一个2034行和4063列(唯一字)的文档术语矩阵.我保存了用于新测试数据的模型.我的新测试数据
test_data = ['Love', 'python', 'every','time']
Run Code Online (Sandbox Code Playgroud)
但问题是我将上述测试数据标记转换为特征向量,但形状不同.因为该模型期望4063向量.我知道如何通过使用CountVectorizer的词汇表来解决它,并在测试数据中搜索每个标记并将其放入该索引中.但是有没有简单的方法来处理scikit-learn本身的问题.
您不应该在测试数据上安装新的CountVectorizer,您应该使用适合您的训练数据并调用transfrom(test_data)它.
你有两种方法可以解决这个问题
1.您可以使用与火车功能相同的 CountVectorizer,如下所示
cv = CountVectorizer(parameters desired)
X_train = cv.fit_transform(train_data)
X_test = cv.transform(test_data)
Run Code Online (Sandbox Code Playgroud)
2. 如果您确实愿意,您还可以创建另一个 CountVectorizer(但不建议这样做,因为您会浪费空间,并且您仍然希望对 CV 使用相同的参数),并使用相同的功能。
cv_train = CountVectorizer(parameters desired)
X_train = cv_train.fit_transform(train_data)
cv_test = CountVectorizer(vocabulary=cv_train.get_feature_names(),desired params)
X_test = cv_test.fit_transform(test_data)
Run Code Online (Sandbox Code Playgroud)