我正在分析一个数据集,其中的列名如下:[ id,位置,tweet,target_value ]。我想处理某些行中位置列的缺失值。所以我想从该行的 tweet 列中提取位置(如果tweet包含某个位置)本身,并将该值放在 location 列。
现在我对上述方法有一些疑问。
这是这样做的好方法吗?我们可以通过使用训练数据本身来填充一些缺失值吗?不会将其视为冗余功能(因为我们正在使用其他功能推导该功能的值)
答案 0 :(得分:1)
能否请您澄清一下数据集?
首先,如果我们假设位置是发布的推文的信息,那么您的方法(在缺少该信息的行中填写位置列)将出错。
第二,如果我们假设该推文正确包含位置信息,那么您可以使用推文的位置信息填写缺失的行。
如果我们的第二个假设是正确的,那么这将是一个好方法,因为您正在向数据集提供正确的信息。换句话说,您将为模型提供更详细的信息,以便可以在测试过程中更正确地进行预测。
关于您有关的问题,“不会将其视为冗余功能(因为我们正在使用其他功能推导该功能的值)” :
您可以尝试从模型中删除位置列,并使用其余3列来训练模型。然后,您可以使用不同的参数(准确性等)检查新模型是否成功。您可以将其与使用所有4个不同列训练的模型的结果进行比较。此后,如果没有任何重要差异或结果变得严重,则可以说,该列是多余的。您也可以使用主成分分析(PCA)检测相关列。
最后,请不要在测试数据集中使用训练数据。这将导致过度训练,并且当您在现实环境中使用模型时,您的模型很可能会失败。