要精确建模,数据是重中之重,但是模型的输入是受限的,如果数据有缺陷没做清洗,那模型就不可能精准,当你得到不准确结果的时候,第一要怀疑的不是用错模型,而是用错了数据。那么本文就从7个关键性的清理步骤入手,给大家阐明如何做数据清洗。

可能破坏数据集预测有效性的最明显就是不属于集合的异常值。例如,iphone手机9.9元,那可能是并夕夕带来的噪声。为了解决这个问题,可以基于数据的四分位数范围应用标准公式来识别异常值。为此,取代表第75百分位的数据,减去代表第25百分位的数据。该结果值被视为四分位间距(IQR)。为了识别异常值,取第25个和第75个百分位的数字,分别减去和添加1.5 x IQR。任何超出此范围的值都被视为异常值。

无论出于何种目的,包含单个值的列在机器学习领域都是无用的。这些列称为零方差预测值,对你的模型不会有任何积极的影响,并且可能会对建模尝试产生意外的负面影响。要删除这些列,可以通过手动检查(如果数据集的列数有限),也可以通过编程方式删除(如果希望在将来简化此任务)。

通常情况下,数据集的格式可能是将日期存储为字符串,或将某些数字字段存储为文本值。要正确应用某些数据操作,需要确保数据存储为正确的类型。

当处理大量训练集时,不可避免地会有不完整的数据。出现这种情况时,通常有三个选项:保持原样、填充空值或删除空值。

如果保持这些值不变,则可能会损害创建的数据模型,并降低模型的预测有效性。如果缺少的数据为试图预测的结果提供了至关重要的见解,那么保持现状肯定会导致不完美的预测。因此建议填充或删除空值。

如果可以合理地确定应该在空单元格中输入的值,那么这是最好的解决方案。例如,如果知道“score”中具有null值的列意味着不记录任何分数,那么可以简单地将其替换为null值和0。通过这样做,可以保持数据集的完整性,并保障预估的准确性。这种情况使用fillna函数即可。可以将其替换为静态值,也可以将其填充为统计平均值。

如果无法合理预测数据,那么最好的选择是将其从数据集中删除。通过这样做,可以确保只测试完全输入的数据。为此,可以使用dropna()函数自动删除至少包含一个空值的任何列。

清理数据最有效的方法之一就是使用正则表达式。也许有一个包含文本字符串的列,如(“1年”、“5年”、“10年”)。你不能直接把它们转换成整数,但是你知道如果你能只提取数字,它们在关系建模中会更有用。

如果聚合了来自多个源的数据,那么还可能会遇到数据集部分重叠的风险。假设将过去3个月的销售数据合并,但其中两组记录了一周的销售数据。如果我们按原样运行数据,那一周的销售额将是双重加权的,这是会导致模型预估的分布和真实分布不同。要解决此问题,请使用drop_duplicates函数。这将删除所有整行相同的行。

然而,了解数据集中的数据是很重要的。如果存在重复行的正当原因,则删除重复行不会改善数据集,而是会通过删除经常发生的度量来降低数据集的质量。为了避免这个问题,使用某种类型的唯一列(如时间戳或用户ID)将确保重复的度量仍然在唯一列中。

如果不想学习如何使用正则表达式,或者只想删除几个特定的单词,那么还有其他方法可以清理数据,使其更适合于模型训练。使用replace函数可以找到目标数据,并将其替换为预期的数据。如果有一列的值为“Paid”、“notpaid”,直接替换为二进制1或0表示即可。