【问题标题】:Using a XGBoost model that was fitted on a database to make predictions on a new database [closed]使用适合数据库的 XGBoost 模型对新数据库进行预测 [关闭]
【发布时间】:2021-02-18 18:50:03
【问题描述】:

我有一个数据库,我已将其拆分为训练和测试数据集,在训练集上拟合 XGBoost 模型,并在测试集上使用拟合模型进行预测。到目前为止一切都很好。

现在,如果我保存拟合模型并想在一个全新的数据集上使用它来进行预测,我的新数据库应该是什么样的?

是否必须包含确切数量的特征?

分类特征是否必须在两个数据库中具有相同的类别?

【问题讨论】:

  • 它必须具有相同数量的特征。仅当模型具有相同数量/类型的特征时,无论值属于什么类别,该模型都会进行预测,但如果您想要正确的预测,您可能希望新数据具有与训练数据相同的格式。跨度>
  • @DKDK 那么这是否意味着具有类别特征的确切类别数量?因为在进行标签编码后,我需要得到相同数量的列。例如,如果我有一个具有 4 种颜色的颜色特征,那么将从该特征创建 4 列。所以如果我的新数据库有 5 种颜色而不是 4 种颜色,它将创建 5 个新列,因此我的输入特征数量会改变。如果我在这里弄错了,请告诉我。最好的问候。
  • 您必须为分类特征输入完全相同数量的类别。如果您当前的预测数据与训练集的格式不同,则在将其输入模型之前重新格式化。如果您考虑一下,制作 xgboost 或任何机器学习模型的全部意义在于从固定数量的类别中做出可行的预测。
  • @DKDK 非常感谢您的帮助。这是一个非常有见地的评论,让整个事情对我来说更加清晰
  • 我投票结束这个问题,因为它不是关于 help center 中定义的编程,而是关于 ML 理论和方法。

标签: python database machine-learning regression xgboost


【解决方案1】:

我假设,您使用 one-hot 编码来表示颜色特征?

所以从技术上讲,为了避免测试数据中出现额外或新的特征,您应该使用训练+测试数据形成特征向量。

  1. 对整组训练+测试数据进行一次热编码/特征化。现在将training-datasettesting-dataset 分开。
  2. 假设 [v1, v2, v3... vn] 是来自训练+测试数据的特征名称列表。
  3. 现在使用这个特征名称形成训练数据。正如预期的那样,训练数据中与第 5 种颜色对应的特征列都将为零 and THATS FINE
  4. 对测试数据使用相同的功能列表,现在您应该不会在即将推出的新功能方面有任何差异。

希望澄清。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2011-10-04
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多