pandas:fillna,其值可以指示它曾经为null

时间:2019-04-10 03:44:04

标签: pandas machine-learning data-science data-processing

我正在使用数据集来构建机器学习模型。在样本中,有3类标签,例如“异常”,“正常”,“数据丢失”。

使“数据丢失”类别使我感到困惑。在示例中,此类别表示该行中的某些功能为空。

我的问题是:由于数据集中的null应该导致预测“数据丢失”。在数据预处理中我还需要填写吗?

如果我用一个值(平均值/中位数..等等)填充数据集,那么应该被预测为“数据丢失”的样本会被混淆吗?

或者我应该为fillna使用一个值来表明它是

1 个答案:

答案 0 :(得分:0)

如果您打算使用LighGBM,XGBoost或CatBoost,则以下文本有效。

最重要的是,检查是否有100%的置信度认为每个“数据丢失”标签都与该行中至少一个空连接在一起,并且任何列中的每个空都与“数据丢失”类别连接。如果是这样,您可以从训练和测试数据集中排除所有这些行,将它们标记为“数据丢失”,然后仅使用两个标签训练其余的行。无聊。

最有趣的情况是上述情况并非完全正确。在这种情况下,您必须使用三个标签进行训练,并且需要一些特征工程和特殊插补。 Primo是行中的空值总和的附加功能,将非常有帮助。 Secundo,填充空值非常重要,但不是平均值/中位数/等,而是与其他值不同的值,例如-9999999。而且,重要的是-不允许gbm方法将它们视为null。 为什么? Gbm方法在不考虑空值的情况下找到剪切值,然后检查将空值连接到左侧叶还是右侧叶是否更好。此策略在所有情况下都很好,但这种策略以“数据丢失”为标签,而使用null表示此标签非常可能。