ValueError:形状(4155,1445)和(4587,7)不对齐:1445(dim 1)!= 4587(dim 0)

时间:2019-06-16 09:46:16

标签: python-3.x machine-learning scikit-learn naivebayes

我正在尝试使用其他数据集进行预测。但是仍然有问题

我尝试更改参数,但仍然没有区别。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=77)
X_train.shape, X_test.shape, y_train.shape, y_test.shape

(((15484,4587),(3871,4587),(15484,),(3871,))

nb = MultinomialNB(alpha=0.01)
mnb = nb.partial_fit(X_train, y_train, classes)

然后我调用第二个数据集:

X_train3, X_test3, y_train3, y_test3 = train_test_split(X3, y3, test_size = 0.99999, random_state=77)
X_train3.shape, X_test3.shape, y_train3.shape, y_test3.shape

(((0,1445),(4155,1445),(0,),(4155,))

y_pred=mnb.predict(X_test3)

ValueError:形状(4155,1445)和(4587,7)未对齐:1445(dim 1)!= 4587(dim 0)

我希望模型可以使用第二个数据集进行预测。任何帮助表示赞赏。 tks!

1 个答案:

答案 0 :(得分:1)

看看Multinomial NB的sci-kit学习文档。

它明确指定了输入数据的结构,而训练model.fit()在测试或评分model.predict()时必须与输入数据的结构匹配。

这意味着您不能对不同的数据集使用相同的模型。唯一可行的方法是,两个数据集都具有相同的特征(与训练数据集具有相同的特征数和顺序)。

在您的情况下,这是行不通的,因为这两个数据集的形状不同,数据集是不同的。

Set 1 has 4587 features
Set 2 has 1445 features

确保两个数据集都具有与训练集相同数量的特征,并且顺序相同。