我正在尝试使用其他数据集进行预测。但是仍然有问题
我尝试更改参数,但仍然没有区别。
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!
答案 0 :(得分:1)
看看Multinomial NB的sci-kit学习文档。
它明确指定了输入数据的结构,而训练model.fit()
在测试或评分model.predict()
时必须与输入数据的结构匹配。
这意味着您不能对不同的数据集使用相同的模型。唯一可行的方法是,两个数据集都具有相同的特征(与训练数据集具有相同的特征数和顺序)。
在您的情况下,这是行不通的,因为这两个数据集的形状不同,数据集是不同的。
Set 1 has 4587 features
Set 2 has 1445 features
确保两个数据集都具有与训练集相同数量的特征,并且顺序相同。