西蒙·基利
我只是想要一些关于在将数据输入到机器学习算法之前应该如何对其进行预处理的一般性提示。我试图进一步了解为什么我们在预处理时会做出不同的决定,以及是否有人可以仔细研究清理数据,删除多余数据等时需要考虑的所有不同内容。我会发现它非常有用我在网上搜索了很多典型的答案或经验法则,似乎没有任何答案。
我有一个可用.tsv文件的一组数据在这里。训练集总计7,000行,测试集3,000行。如果每行都不可读100行,应该使用什么不同的策略来处理格式错误的数据?500?1000?任何帮助我对此做出解释的指导方针将非常感谢。
示例代码很不错,但是如果您不喜欢它,则不必这样做,我只想了解我应该做的事情!:)
谢谢
马雷克
有很多事情需要根据实际数据确定。这并不像命名数据时总是要执行的几个步骤那样简单。
但是,我可以尝试列举一些通常会很有帮助的东西。尽管如此,首要也是最重要的事情是彻底分析数据,并尽最大努力“理解它们”。了解数据以及爬网和收集数据背后的所有背景是必不可少的部分。如果您了解丢失数据或噪声的原因,那么可以了解如何进行处理。
不过,我将尝试给您一些提示:
- 标准化值-并非总是必须标准化所有功能。但通常来说,规范化不会带来任何伤害,并且会有所帮助。因此,如果您不受限制,请尝试尝试对所有功能使用归一化,但显然没有意义的要归一化。最常用的归一化方法是:线性归一化(将特征值映射到<0,1>范围)和z归一化,这意味着您减去特征值的平均值,然后将结果除以标准差。通常不可能说哪个更好。(我们回到对数据的理解上)
- 缺失值-必须决定如何处理缺失值。有几种方法来处理它。删除缺少值的样本。如果您有足够的数据样本,则也许不必关心缺少值的样本。它可能只会给您的结果带来噪音。在这种情况下,样本中仅缺少一个要素值,您只需用要素的均值填充该值即可。(但要小心,因为同样,您可以将杂波带入结果中)
- 离群值-在许多情况下,您会遇到与其他样本(离群值)相距较远的样本。离群值通常只是噪音,数据错误,也可能是某种特殊行为的信号(例如,当某些东西违反了通常的行为模式时,它可能是攻击者或某些东西引起的行动的信号,例如银行网络)。在大多数情况下,最好删除异常值,因为异常值的数量通常很少,这可能会对结果产生很大的影响。以直方图为例-我只想说0-2.5%和97.5-100%。
- 错误-数据中很可能会出现错误。这是我无法向您提供任何提示的部分,因为有必要真正了解所有背景并了解发生错误的情况。
- 标称值-如果可以订购任何标称值,则只需将标称值替换为数字(0、1、2、3、4和5)。如果无法对值进行排序(例如,颜色=蓝色,黑色,绿色...),则最好的方法是将特征拆分为与可能值集的基数一样多的特征。只需将特征转换为二进制值-“是绿色吗?” “是/否”(0/1)。
总结,真的很难回答。避免“使情况变得更糟”的好方法是从消除所有“不良价值”开始。只需删除所有缺少或错误值的行。如前所述转换所有其他值,并尝试获得您的第一个结果。然后,您将更好地了解所有数据,并且将更好地了解在何处寻求任何改进。
如果您对特定的“预处理问题”还有其他疑问,我将很乐意编辑此答案,并提供更多解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句