ValueError: shapes (4155,1445) and (4587,7) not aligned: 1445 (dim 1) != 4587 (dim 0)

ValueError: shapes (4155,1445) and (4587,7) not aligned: 1445 (dim 1) != 4587 (dim 0)

我正在尝试使用不同的数据集进行预测。但是还是有问题

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

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)

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

查看 sci-kit 学习文档 Multinomial NB

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

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

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

Set 1 has 4587 features
Set 2 has 1445 features

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