变量操作

Reads: 965 Edit

1 功能描述

数据读取到SPSS Modeler,并对样本进行一些基本的处理和统计后,接着可以对变量进行变换操作。在SPSS Modeler中关于变量变换操作功能的节点位于“字段选项”选项卡下面!我们通过几个例子来演示主要节点的用法。

mdl-114

2 类型节点

我们以DRUG-imperfect.xls数据集为例来演示,首先将其读取到SPSS Modeler中

首先,将“源”选项卡下面的Excel节点添加到数据流编辑区域。

mdl-115

双击Excel节点将其打开,选择DRUG-imperfect.xls文件的存放路径,其他保持默认,然后点击确定。

mdl-116

将“输出”选项卡下面的表添加到数据流中,并与Excel节点连接。

mdl-117

双击表节点将其打开,点击运行,数据将载入到表中。检查数据发现,Age变量中有一个样本数值为430,明显与现实不符,可能是录入原始数据时手误输错;Sex变量中有F、M,还有男、女,数据不规范;Na和K变量下面均有一些缺失值。

mdl-118

将“字段选项”选项卡下面的类型节点添加到数据流中,并与Excel节点连接。

mdl-119

双击类型节点将其打开。

其中读取值/清除值按钮可以将数据读取到SPSS Modeler软件/或清除数据;

测量列下面可以选择变量的类型,类型节点默认会自动给出每个变量的类型,如果不符合预期,可以手动调整;

角色列可以选择“构建模型时变量的角色”,如果是被预测的变量,则角色选择目标,如果是用于预测的变量,则角色选择输入,如果变量既不用于预测,也不是被预测变量,则选择无。

mdl-120

类型节点中的另一个十分重要的功能是对缺失数据进行处理。

由于Na和K变量中有缺失值,可以通过检查列来控制,选择“丢弃”,则缺失值整行数据将被删除,如果选择“强制”,则SPSS Modeler将会对缺失值用平均数来填充。

mdl-121

对于Age变量,有个样本值为430,SPSS Modeler不会把430当成异常值,需要人为指定。

选择缺失列中的“指定...”选项。

mdl-122

在出现的窗口中,将Age变量的上限值修改为100(一般人的年龄小于100岁,也可根据实际情况来调整),其他保持默认,点击确定。

mdl-123

回到类型设置窗口后,可以发现Age变量值的范围变成[15,100],此时430将被当作异常值来处理,在检查列可以选择“强制/丢弃/无”等来对430的样本进行处理,这里选择的是强制,即430将会用平均年龄来代替。

mdl-124

在Sex变量中,除了用F和M表示性别外,变量中还有男、女的值,不够规范。同理,SPSS Modeler不会把男、女当成异常值,需要人为指定。

选择缺失列中的“指定...”选项。

mdl-125

在出现的窗口中,指定值和标签下面的男、女值删除,只保留F和M;

勾选定义空白,在缺失值中添加“女”(没有添加“男”是为了进行对比),即变量中的“女”是用户指定的缺失值。而“男”是系统缺失值。其他保持默认,点击确定。

mdl-126

回到类型设置窗口,将Sex变量中的缺失列选择“*”,表示不处理用户缺失值;检查列选择“无效”。

注意:只有在指定中选择了定义空白(指定用户缺失值),缺失列中的“*”才有用,否则“*”选项不起作用。

mdl-127

将“输出”选项卡下面的表节点添加到数据流,并于类型节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,Sex列中,数值女被保留(因为女是用户定义的缺失值,且打开了“*”选项),而数值男变成了“$null”。

mdl-128

回到类型设置窗口,将Sex变量中的缺失列选择空,表示处理用户缺失值;检查列选择“无效”。

mdl-129

双击表节点将其打开,并点击运行按钮读取数据,可以发现,Sex列中,数值“女”和数值“男”变成了“$null”,因为关闭了“*”选项。

mdl-130

说明:类型节点中用户定义缺失值的功能比较绕,但一般情况下不需要使用该功能。

3 重新分类节点

仍然以DRUG-imperfect.xls的数据为例,数据已经读取且添加了类型节点。

注意:由于类型节点能够实例化数据(读取数据进入SPSS Modeler),是很多功能的基础。

mdl-131

双击类型节点将其打开,将缺失列和检查列保持默认(不对缺失值进行处理),点击确定。

mdl-132

将“字段选项”选项卡下面的重新分类节点添加到数据流中

mdl-133

双击重新分类节点将其打开

重新分类字段选择Sex

新字段名输入:性别

点击获取按钮;在新值列对原始值重新分类,F和M依然为F和M;女和男改为F和M;点击确认。

mdl-134

将“输出”选项卡下面的表节点添加到数据流,并于重新分类节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,数据中新增了性别变量。

mdl-135

4 过滤节点

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的过滤节点添加到数据流。

mdl-136

双击过滤节点将其打开;

由于生成了性别变量,所以在Sex变量对应的过滤列,将箭头去掉,表示将Sex列过滤掉。

mdl-137

将“输出”选项卡下面的表节点添加到数据流,并于过滤节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,Sex列已经被过滤。

mdl-138

5 填充节点

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的填充节点添加到数据流。

mdl-139

双击填充节点将其打开;填入字段中选择“Na”;

条件:中输入“@NULL(@FIELD)”,其中@NULL()函数表示判断数据是否为缺失值,@FIELD表示填入字段中的所有变量,这里只有一个,即Na;

替换为:中输入“@MEAN(Na)”,其中@MEAN()表示计算变量的平均值。

说明:填充的设置可以用平均数来代替变量中的缺失值。

mdl-140

将“输出”选项卡下面的表节点添加到数据流,并于填充节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现Na变量中的缺失值已经被代替。

mdl-141

我们继续来处理Age变量中的异常值,将“字段选项”选项卡下面的填充节点添加到数据流。

mdl-142

双击填充字段将其打开:

填入字段:中输入“Age”

条件:中输入“Age=430”

替换为:中输入“43”

说明:填充的设置可以将Age变量中的430替换为43(原始数据可能是43,不小心多写了一个0)。

mdl-143

将“输出”选项卡下面的表节点添加到数据流,并于填充节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现Age变量中的430已经被替换为43。

mdl-144

6 匿名化节点

有些时候需要对调查对象的关键信息进行脱敏处理,即将关键变量进行变换使其失去原来的实际意义,但是不影响模型估计。

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的匿名化节点添加到数据流。

mdl-145

双击匿名化节点将其打开,在匿名化值中,将Age变量修改为是,即仅对Age进行匿名化处理。

mdl-146

点击匿名化值,可以看到用于匿名化的计算公式:(Age+39)*6,点击确定。

mdl-147

将“输出”选项卡下面的表节点添加到数据流,并于匿名化节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现Age变量的数值已经做了变换,看不出具体的年龄信息。

mdl-148

7 导出节点

导出节点的功能非常强大,可以采用任意公式来对原始变量进行变换并生成新的变量。这里我们已经知道了年龄匿名化的公式,所以可以采用导出节点将匿名化后的年龄数值还原。

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的填充节点添加到数据流。

mdl-148-1

双击填充节点将其打开,

模型选择单个;

导出字段中输入:年龄;

导出为选择“公式”;

公式:中输入“Age/6-39”,点击确定。

mdl-149

将“输出”选项卡下面的表节点添加到数据流,并于导出节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现数据中新增了年龄变量。

mdl-150

我们继续演示导出节点的功能,现在想把Na和K变量的数值同时扩大1000倍。

将“字段选项”选项卡下面的填充节点添加到数据流。

mdl-151

双击填充节点将其打开,

模型选择多个;

导出自:中输入“K、Na”;

字段名扩展:中输入“_扩大”;

添加为:中选择后缀;

导出为选择“公式”;

公式:中输入“@FIELD*1000”,点击确定。

mdl-152

将“输出”选项卡下面的表节点添加到数据流,并于导出节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现数据中新增了K_扩大、Na_扩大两列变量。

mdl-153

8 分箱节点

有些模型只能够处理分类变量,比如决策树模型,这时候需要把连续变量修改为分类变量,此时可以使用分箱节点来处理。

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的分箱节点添加到数据流。

mdl-154

双击分箱节点将其打开,分箱字段填入年龄;其他保持默认,点击确定。

mdl-155

将“输出”选项卡下面的表节点添加到数据流,并于分箱节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,新增了年龄_BIN变量,且该变量为分类变量。

mdl-156

9 自动数据准备

自动数据准备节点可以对数据中的变量进行筛选和变换,达到加速模型估计速度的效果。

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的自动数据准备节点添加到数据流。

mdl-157

双击自动准备节点将其打开,选择“平衡速度和精度”,点击确定。

mdl-158

将“输出”选项卡下面的表节点添加到数据流,并于自动数据准备节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,Age、Na、K三列变量进行了变换(标准化处理,可以加速模型估计效果),同时删除了一些存在多重共线性的变量。

mdl-159

10 分区节点

数据挖掘模型中,样本数据一般要分为训练数据和测验数据,这样可以增加数据挖掘模型的泛化能力。这需要使用分区节点来实现。

仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的分区节点添加到数据流。

mdl-160

双击分区节点将其打开,分区:中选择“训练、测试和验证”选项;

训练分区、测试分区和验证分区大小分别设为50,25,25(加起来等于100就行),点击确定。

mdl-161

将“输出”选项卡下面的表节点添加到数据流,并于类型节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,数据中新增了分区变量。

mdl-162

11 重新结构化节点

重新结构化节点能够将分类变量分成不同的列来显示。仍DRUG-imperfect.xls的数据流为例,将“字段选项”选项卡下面的重新结构化节点添加到数据流。

mdl-163

双击重新结构化节点将其打开,可用字段选择性别;

将性别变量中的两个取值,性别_F和性别_M移动到右侧的创建重新构建的字段中;

值字段:中添加Na_transformed和K_transformed两个变量,点击确定。

mdl-164

将“输出”选项卡下面的表节点添加到数据流,并于重新结构化节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,Na_transformed和K_transformed两列的数据分成了男性和女性列来显示。

mdl-165

12 转置节点

数据的转置即行和列进行对调。我们以“房价和M2.sav”数据为例进行演示。

首先,将“源”选项卡下面的Statistics节点添加到数据流

mdl-166

双击Statistics节点将其打开,选择“房价和M2.sav”数据文件的存放路径。

mdl-167

将“输出”选项卡下面的表节点添加到数据流,并与Statistics节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现,数据呈横向排列。

mdl-168

将“字段选项”选项卡下面的转置节点添加到数据流。

mdl-169

双击转置节点将其打开。选择“从字段读取”并选中“变量名”

点击读取值按钮,将变量名下面的取值读取到新字段名称中;

行ID名称:中输入“时间”,点击确定。

mdl-170

将“输出”选项卡下面的表节点添加到数据流,并于转置节点连接;

双击表节点将其打开,并点击运行按钮读取数据,可以发现此时数据呈纵向排列

mdl-171



获取案例数据,请关注微信公众号并回复:Modeler_dt5


Comments

Make a comment