缺失数据值

在数据挖掘的数据准备阶段,您通常需要替换数据中的缺失值。

缺失值是数据集中未知、未收集或输入不正确的值。 通常,此类值对于其字段无效。 例如,字段 Sex 应包含值 MF 。 如果您发现字段中的值 YZ ,可以确定这些值无效,因此应将其视为空白。 同样,Age 字段中出现负值无意义,也应解释为空白值。 在问卷调查中,这种明显错误的数值经常被故意输入,或者故意留空,以表示不回答。 有时候,您可能需要更仔细地检查这些空白值,以确定拒绝提供本人年龄等拒绝回答行为是否会影响到具体预测结果。

某些建模技术在处理缺失值方面有明显的优势。 例如 , C5.0 节点Apriori节点可以很好地处理在 Type节点中明确声明为“缺失”的值。 其他建模技术在处理缺失值时比较麻烦,需要的训练时间较长,而且生成的模型不够精确。

缺失值有多种类型,包括:
  • Null 或系统缺失值。 这些是数据库或源文件中留空的非字符串值,并且在导入或类型节点中没有被明确定义为“缺失”。 系统缺失值显示为 $null$。 请注意,空字符串在 中不被视为空值,尽管某些数据库可能将其视为空值。
  • 空字符串和空白。 空字符串值和空白(不含可见字符的字符串)视为与空值不同。 在大部分用途中,空字符串都视为等同于空白。 例如,如果您在“导入”或“类型”节点中选择将空格视为空白值的选项,那么此设置也会应用于空字符串。
  • 空白或用户定义的缺失值。 这些值,例如 unknown99–1 ,在导入节点或类型节点中明确定义为缺失。 您还可以选择性地将空值和空白视为空白值,这样就可以予以标记以进行特殊处理,以及排除在大部分计算之外。 例如,您可以使用 @BLANK 函数将这些值与其他类型的缺失值一起视为空白值。

正在读入混合数据。 请注意,读取以数字形式(整数、实数、时间、时间戳记或日期)存储的字段时,任何非数字值都会设置为 nullsystem missing。 这是因为,与某些应用程序不同,它不允许在一个字段中混合使用不同的存储类型。 为避免发生这种情况,对于任何包含混合数据的字段,您应根据需要,通过在“导入”节点或外部应用程序中更改存储类型,以字符串形式读取这些字段。

从 Oracle 读取空字符串。 当从 Oracle 数据库中读取或向其中写入数据时,请注意,与大多数其他数据库不同, Oracle 将空字符串值视为与空值相同。 这意味着,同样的数据从 Oracle 数据库抽取时,其行为可能不同于从文件或其他数据库抽取时的行为,而且该数据可能会返回不同的结果。