您好,我对 Python 和机器学习非常陌生,我遇到了一个问题。在拆分并完成我的训练和测试模型后,现在我需要测试一个完整的不同数据集。
以下是我创建训练和测试的方式:
使用 NaiveBayes 分类器模型
nb_model = sklearn.naive_bayes.MultinomialNB()
nb_model.fit(X_train_v, y_train)
y_pred_class = nb_model.predict(X_test_v)
y_pred_probs = nb_model.predict_proba(X_test_v)
为了更改我正在使用的数据集,我需要调整什么,以便我可以将新数据集运行到训练模型中。
感谢您的时间和帮助!
答案 0 :(得分:0)
从具体和功能上来说,您的新数据集应该具有相同数量的特征。
如果 x_train.shape
给出 (752, 8)
,那么你知道它有 8 个特征和 752 个样本。
在对您的模型进行训练之后,您可以确定 model.n_features
会给您 8
。
您的模型现在能够从具有 8 个特征的数据中预测输出:
import numpy as np
# 10 randomly generated samples with 8 features
new_dataset_1 = np.random.randint(0, 100, size=(10, 8))
new_pred_1 = model.predict(new_dataset_1)
# > array([47, 15, 2, 81, 99, 63, 53, 55, 24, 47])
new_pred_1.shape
# > (10, ) # One predicted class per sample
如果您尝试从具有任何其他特征计数的数据中进行预测,它将失败:
# 10 randomly generated samples with 9 features
new_dataset_2 = np.random.randint(0, 100, size=(10, 9))
new_pred_2 = model.predict(new_dataset_2)
# > ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0,
# with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 8 is different from 9)
在其他情况下,可能有办法获得相同数量的特征,但这完全取决于假设、数据类型或测试模型。
当然,这只是一个例子,对随机生成的数据进行预测没有任何意义。您的新数据应该代表与训练数据相关的内容。
例如,您可以认为尝试使用您对德国火蚁繁殖率进行训练的模型来预测奥地利火蚁繁殖率是合理的。