缺失值信息提取

 

提取单变量缺失信息

为每个包含缺失值的变量建立一个哑变量形式的新变量,用于将该变量的缺失信息标识出来。

SPLA.mi()P.mi()会自动生成一个变量来标记缺失信息

例如,对titanic.csv中的变量缺失情况进行标记:


A

1

=file("D://titanic.csv").import@qtc()

2

=A1.mi("Age")

3

=A1.fname()

4

=A3.(A1.mi(~))

A2 生成一个MI_Age的变量来标记Age是否缺失

..

mi()函数会判断变量的缺失率,当缺失率小于5%或大于95%时则不会指示变量,而是返回null

A4 标记所有字段的缺失信息,可以看到只有第6和第11个字段生成了MI指示变量。

..

提取多个变量缺失信息

当数据集中包含缺失值的变量较多时,单个变量的提取方式会极大地增加模型的复杂度,这时可以通过只建立一个新变量,将每一个样本在所有变量上的缺失值情况标识出来。这种方法虽无法体现具体变量影响,但是对模型复杂度影响不大。

SPL使用A.mvp(T)P.mvp(cns, T)可以整合多个MImvp变量来表示多变量的缺失信息,并且对mvp变量自动进行后续处理。

例如在房价预测的数据中有81个变量,使用mvp函数提取多个变量的缺失信息


A

1

=file("D://house_prices_train.csv").import@qtc()

2

=A1.fname()

3

=A2.(A1.mi(~))

4

=A3.group(!~)

5

=to(A4(1).len()).("A4(1)("/~/")(#).field(1):MI_"/~).concat@c()

6

=A1.derive(${A5})

7

=to(A4(1).len()).("\""/"MI_"/~/"\"").concat@c()

8

=A6.mvp([${A7}],A1.(SalePrice))

9

=A1.derive(A8(1)(#).field(1):mvp)

A2 获取变量名称

A3 提取每个变量的缺失值信息,存在缺失值的变量返回MI指标,无缺失值的变量会返回空值

..

A4 根据MI指标是否为空,分成两组

..

A5-A6 MI指标添加到序表A1

..

A7 提取各个MI指标字段名称,作为A8的输入参数

..

A8 使用P.mvp(cns, T)函数整个多个MI指标,生成一个mvp变量来表示多变量的缺失信息,并且自动对mvp变量做预处理操作,比如图中Pow2表示幂变换。有关mvp()的详细使用说明请参考http://d.raqsoft.com.cn:6999/esproc/func/math.html

..

A9 mvp变量添加到建模数据A1

..