如何为机器学习预处理数据?

2024-04-27 04:58:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想要一些关于数据在输入到机器学习算法之前应该如何进行预处理的一般提示。我正试图进一步理解为什么我们在预处理时会做出不同的决定,如果有人能在清理数据、删除多余的数据等时,把我们需要考虑的所有不同的事情都做一遍。我会发现这非常有信息,因为我在网上搜索了很多规范的答案或经验法则这里和那里似乎没有。在

我在.tsv文件中有一组可用的数据here。训练集有7000行,测试集有3000行。如果每个行中有100行不可读,我应该使用什么不同的策略来处理格式错误的数据?500?1000?任何能帮助我解释这一点的指南都将不胜感激。在

示例代码将是伟大的看到,但如果你不喜欢它是没有必要的,我只是想了解我应该做什么!:)

谢谢


Tags: 文件数据答案规范算法机器信息here
1条回答
网友
1楼 · 发布于 2024-04-27 04:58:00

有很多事情需要根据实际数据来决定。这并不像在获取数据时总是指定需要执行的几个步骤那么简单。在

不过,我可以试着列举一些通常帮助很大的事情。不过,首先也是最重要的是彻底分析数据,并尽力“理解它们”。了解数据和所有的背景,背后的抓取和收集数据是必不可少的部分。如果您了解丢失数据或噪音的原因,那么您就可以知道如何处理它了。在

不过,我会给你一些提示:

  1. 规范化值-并非总是需要规范化所有特征。但一般来说,正常化不会造成伤害,而且会有很大帮助。除了那些没有被规范化的特征之外,如果你没有明确的尝试去规范化那些特征。最常用的归一化方法是:线性归一化(将特征值映射到<;0,1>;范围)和z-归一化,这意味着您要减去特征值的平均值,然后将结果除以标准差。一般说来,哪一个更好是不可能的。(我们正在重新理解数据)
  2. 缺失值-必须决定如何处理缺失值。有几种方法可以处理它。删除带有缺失值的样本。如果您有足够的数据样本,也许没有必要关心缺失值的样本。这只会给你的结果带来噪音。在这种情况下,样本中只缺少一个特征值,您可以用特征值的均值填充该值。(但要小心,因为同样,你可以把噪音带到结果中)
  3. 离群值-在许多情况下,您会遇到与其他样本相距甚远的样本,即离群值。异常值通常只是一种噪音、数据错误,也可能是一种特殊行为的信号(例如,当存在违反通常行为模式的行为时,它可能是攻击者或其他东西(例如银行网络)导致的行为信号)。在大多数情况下,只需删除离群值是一个好主意,因为离群值的数量通常很低,并且可能会对结果产生很大的影响。以柱状图为例,我将截去0-2.5%和97.5-100%的。在
  4. 错误-数据中很可能存在错误。在这一部分,我不能给你任何提示,因为有必要真正了解所有的背景知识,并知道错误是怎么发生的。在
  5. 标称值-如果有任何可订购的标称值,则只需标称值替换为数字(0、1、2、3、4和5)。如果无法对值进行排序(例如,颜色=蓝色、黑色、绿色…),则最好的方法是将特征分割为尽可能多的特征值集。只需将特征转换为二进制值-“是绿色的吗?”是/否”(0/1)。在

总而言之,一般来说很难回答。避免“让事情变得更糟”的好方法是从消除所有“坏价值”开始。只需删除所有缺少或错误值的行。转换前面提到的所有其他值,并尝试获得第一个结果。然后你会更好地理解所有的数据,你也会有更好的想法去哪里寻找任何改进。在

如果你对特定的“预处理问题”有任何进一步的问题,我很乐意编辑这个答案,并添加更多如何处理它的想法。在

相关问题 更多 >