首页 > 解决方案 > 特征的名称和顺序对预测算法是否重要

问题描述

我的 X_test 数据框的列的名称/顺序是否必须与我用于拟合的 X_train 相同?

下面是一个例子

我正在训练我的模型:

model.fit(X_train,y)

在哪里X_train=data['var1','var2']

但是在预测期间,当我使用:

model.predict(X_test)

X_test定义为:X_test=data['var1','var3']

wherevar3可能是与 完全不同的变量var2

是否predict假设这var3var2因为它是 中的第二列相同X_test

如果:

X_live被定义为:X_live=data['var2','var1']

会预测知道重新排序 X 以正确排列它们吗?

标签: pythonpredictdata-fitting

解决方案


列的名称无关紧要,但顺序很重要。您需要确保顺序与您的训练和测试数据一致。如果您在训练数据中传入两列,您的模型将假定任何未来的输入都是按该顺序排列的那些特征。

只是一个非常简单的思想实验。想象一下,您训练一个减去两个数字的模型。特征是 (n_1, n_2),您的输出将是 n_1 - n_2。

您的模型不处理列的名称(因为只传入数字),因此它学习第一列、第二列和输出之间的关系 - 即output = col_1 - col_2.

不管你传入什么,你都会得到你传入的第一件事减去你传入的第二件事的结果。你可以将你传入的第一件事和你传入的第二件事命名为你想要的任何东西,但是在一天结束时,您仍然会得到减法的结果。

为了获得更多技术性,模型内部发生的主要是一系列矩阵乘法。你传入输入矩阵,乘法发生,你得到结果。训练模型只是“调整”您的输入乘以矩阵中的值,目的是最大化这些乘法的输出与您的标签的接近程度。如果你传入的输入矩阵与它所训练的矩阵不同,乘法仍然会发生,但你几乎肯定会得到一个非常错误的输出。下面没有智能功能重新排列。


推荐阅读