特征的名称和顺序对预测算法重要吗

Tar*_*lia 6 python predict data-fitting

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

下面是一个例子

我正在训练我的模型:

model.fit(X_train,y)
Run Code Online (Sandbox Code Playgroud)

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

但在预测过程中,当我使用:

model.predict(X_test)
Run Code Online (Sandbox Code Playgroud)

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

其中var3可能是与 完全不同的变量var2

是否predict假设 与中的第二列var3相同?var2X_test

如果什么:

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

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

Pri*_*usa 5

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

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

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

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

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