包括索引列作为模型的预测器?

数据挖掘 机器学习 分类 逻辑回归
2022-03-06 14:48:11

我有一个由 1000 个观察值(行)、11 个预测变量 + 1 个响应(12 列)组成的小型数据集。它是一个玩具数据集,用于大学机器学习课程中的学习目的——二元分类(心脏病与无心脏病)。

我已经拟合了逻辑回归、SVM 和 KNN。但是,我正在使用 python,并且我正在删除一些与我不想考虑的缺失值和异常值相对应的行 - 使用df.drop()然后reset_index(). 如果您不设置 to 的 drop 标志,reset_indextrue将在数据框中获得一列,其中包含您要重置的索引。我不小心忘记将标志设置为,true并且在拟合提到的 3 个模型时,包含这些索引的列。这给了我 99-100% 的 f1 分数。当我意识到我不小心包含了这个列时,我放弃了这个列,重新安装,并在各自的模型中获得了大约 60-80% 的 F1 分数。

包含这列指标是否有理由让您获得 100% 的 F1 分数甚至准确度?这仅仅是一个巧合,显然适用于数据集吗?

1个回答

包括索引列作为模型的预测器?

不,不包括索引。他们没有提供有关问题的任何有意义的信息。它们只是一个枚举。把他们带走。

包含这列指标是否有理由让您获得 100% 的 F1 分数甚至准确度?

在训练集中进行评估时,您可能会明白这一点,但在测试中您不会得到。如果这样做,那么您的数据有问题(可能已排序)。

底层算法在这里做了什么?像这样的决策树

if index == 1:
 predict =1
if index == 2:
 predict =0
.
.
.

如您所见,这里没有关于该问题的有意义的信息,并且 train 中的预测仍然为零。

结论:不要使用索引作为训练特征。