我只是想要一些有关如何在将数据馈送到机器学习算法中的数据的一般提示。我正在努力进一步了解为什么我们在预处理时间做出不同的决定,如果有人可以仔细研究清理数据时需要考虑的所有不同事情,删除多余的数据等。我会发现它非常有用我已经经常在这里搜索网络的一些规范答案或经验法则,似乎没有任何东西。
我在一个.TSV文件中有一组数据。培训设置为7,000行,测试组为3,000。如果每个行都不可读,我应该使用哪些不同的策略来处理错误的数据?500?1,000?为此,任何指导方针都将不胜感激。
示例代码很高兴看到,但是如果您不喜欢它,那不是必需的,我只想了解我应该做什么!:)
谢谢
有很多事情需要根据实际数据来确定。它不像命名几个步骤那样简单。
但是,我可以尝试列举一些通常有帮助的事情。尽管如此,第一个也是最重要的是要彻底分析数据并尽最大努力"理解它们"。了解数据以及爬行和收集数据背后的所有背景是必不可少的部分。如果您了解丢失数据或噪声的情况如何,那么您可以有一个线索如何处理。
不过,我会尝试给您一些提示:
- 归一化值 - 并非总是需要将所有功能归一化。但是总的来说,标准化不会受到伤害,并且可能会有所帮助。因此,如果您不受限制,请尝试一下,并尝试使用标准化所有功能,除了显然是不符合标准化的功能的功能。最常见的归一化方法是:线性归一化(将特征值映射到< 0,1>范围)和 z-formantarization ,这意味着您减去了均值特征值并将结果除以标准偏差。通常不可能说哪一个更好。(我们回到理解数据)
- 缺失值 - 有必要确定如何处理缺少值。有几种方法可以处理它。删除带有缺失值的样品。如果您有足够的数据示例,也许不必关心缺少值的样本。它可能只会给您的结果带来噪音。在这种情况下,样本中只缺少一个特征值,您只需通过功能的均值填充的均值即可。(但是要小心,因为再次,您可以将噪音带入结果)
- 离群值 - 在许多情况下,您会遇到远离其他样本的样本,即异常值。离群值通常只是一个噪音,数据错误,或者可能是特殊行为的信号(例如,当某些东西违反了通常的行为模式时,它可能是攻击者或某些东西引起的动作信号 - 例如,银行网络)。在大多数情况下,只要删除异常值是个好主意,因为离群值的数量通常很少,并且可能会对您的结果产生重大影响。以直方图为例 - 我只是切断了0-2.5%和97.5-100%。
- 错误 - 数据中很可能会出现错误。这是我不能给您任何提示的部分,因为有必要真正了解所有背景,并且知道它是如何发生错误的。
- 名义值 - 如果有任何标称值可以订购,则仅替换将标称值将数字(0,1,2,2,3,4,4,和5)。如果无法订购值(例如颜色=蓝色,黑色,绿色...),那么最好的方法是将功能拆分到尽可能多的功能中值。只是将功能转换为二进制值 - "是绿色吗?"是/否"(0/1)。
总结,通常很难回答。避免"使事情变得更糟"的好方法是从消除所有"不良价值"开始。只需删除所有缺失或错误值的行即可。转换所有其他值如前所述,并尝试获得第一个结果。然后,您将更好地了解所有数据,并且您将更好地了解在哪里寻找任何改进。
如果您对特定的"预处理问题"还有其他问题,我很乐意编辑此答案并添加更多想法。