朴素贝叶斯 ValueError:维度不匹配

数据挖掘 Python 朴素贝叶斯分类器
2022-02-17 10:09:07

我正在尝试对文本数据的类别进行预测,其中之一是朴素贝叶斯。训练数据包含7个类别,802个数据点。与 SMOTE 平衡后,所有 7 个类别现在有 134 个数据点,总共 938 个。

训练数据:

df_train['Categories'].value_counts()

Category 1         134
Category 2         130
Category 3         128
Category 4         106
Category 5         103
Category 6         101
Category 7         100


X = df_train['Element']
y = df_train['Categories']

count_vect = CountVectorizer(ngram_range=(1,2))
X_vect = count_vect.fit_transform(X)
print(X_vect.shape)
X_res, y_res = sm.fit_resample(X_vect, y)
print(X_res.shape)

(802, 747)
(938, 747)

我要预测的测试数据包含 46 个文本元素,这些元素矢量化为 280 个特征。

df_test_bagofwords = count_vect.transform(df_test['Elements'])
print(df_test_bagofwords.shape)

(46, 280)

mnb = MultinomialNB().fit(X_res, y_res)
mnb_pred = mnb.predict(df_test_bagofwords)

ValueError: dimension mismatch

当尝试使用 SVM 进行相同操作时,我会得到更多信息:

ValueError: X.shape[1] = 280 should be equal to 747, the number of features at training time

我认为 count_vect.transform() 会将测试数据拟合到矢量化和拟合的训练数据。但是这个错误是一致的。

0个回答
没有发现任何回复~