【问题标题】:How can I test my training model using a different dataset in machine learning如何在机器学习中使用不同的数据集测试我的训练模型
【发布时间】:2021-08-25 03:33:34
【问题描述】:

您好,我对 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)

我需要进行哪些调整才能更改我正在使用的数据集,以便将新数据集运行到训练模型中。

感谢您的宝贵时间和帮助!

【问题讨论】:

  • 您的意思是在新数据集上训练新模型还是在新数据集上使用您之前训练的模型进行预测?
  • 是的,我的意思是使用我之前训练的模型在新数据集上进行预测。谢谢。

标签: python machine-learning testing training-data naivebayes


【解决方案1】:

具体而言,从功能上讲,您的新数据集应该具有相同数量的特征。

如果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)

在其他情况下,可能有多种方法可以获得相同数量的特征,但这完全取决于假设、数据类型或测试模型。

当然,这只是一个说明,对随机生成的数据进行预测没有任何意义。您的新数据应该代表与训练数据相关的内容。

例如,您可以考虑使用您训练的德国火蚁繁殖率模型来预测奥地利火蚁的繁殖率是合理的。

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 2020-02-21
    • 2020-07-24
    • 2019-07-03
    • 2017-10-09
    • 2019-05-13
    • 2022-12-25
    • 2017-06-25
    相关资源
    最近更新 更多