Clementine2变量管理Word文档格式.docx
《Clementine2变量管理Word文档格式.docx》由会员分享,可在线阅读,更多相关《Clementine2变量管理Word文档格式.docx(33页珍藏版)》请在冰点文库上搜索。
这里,首先,添加变量值标签以规范是否无偿献血的取值,指定用户缺失值;
其次,说明家庭人均年收入的合理取值范围。
为此,应分别选择是否无偿献血和家庭人均年收入变量,鼠标选择图3-2中的缺失(Missing)列。
其中有三个选项。
●开(*)[On(*)]:
表示允许相应变量取用户缺失值,不进行修正,但用户缺失值并不等同于正常值。
●关(Off):
表示不允许相应变量取用户缺失值。
●指定(Specify):
定义变量值取值范围、用户缺失值等信息。
这里,选择该项,窗口如图3-3和图3-4所示。
图3-3集(Set)类型的指定(Specify)窗口图3-4范围(Range)类型的指定(Specify)窗口
不同类型变量的指定(Specify)窗口略有差别,但含义大体一致。
■类型(Type)选项:
显示当前变量的类型和存储类型。
■值(Values)选项:
指定决定变量取值范围的方法。
其中,读取数据(Readfromdata)表示取决于所读的外部数据;
传递(Pass)表示忽略所读的外部数据;
指定值和标签(Specifyvaluesandlabels)表示人为指定变量取值和变量值标签。
用户可根据当前变量的实际意义,手工指定其合理的取值,并在标签(Label)框中输入关于变量值含义的简短说明文字。
这里,为指示是否无偿献血的合理取值,分别在Yes和No行对应的标签(Labels)列中输入变量值标签“无偿献血”、“未无偿献血”;
家庭人均年收入的取值范围不能直接由外部数据决定,否则Clementine将视999999(用户缺失值)为正常值。
可手工输入合理的取值区间为7333.0至74460.0。
■检查值(Checkvalues)选项:
指定对变量值的修正方法,该功能同图3-2中的检查(Check)列。
■定义空白(Defineblanks)选项:
选中该选项,表示视下列值为空白。
其中,缺失值(Missingvalues)框:
在此处输入的离散值都当空白处理;
范围—到(Rangeto)框:
在此处输入的连续区间中的值都当作空白处理;
无效值(Null)和空白(Whitespace):
系统缺失值$null$或空格都当作空白处理。
(type节点)需要注意的是:
Clementine不对空白进行替补处理,因此定义空白(Defineblanks)的目的仅是将那些无需修正和替代的用户缺失值与正常值区分开,以便于后续建模。
所以,当选择了定义空白(Defineblanks)并返回图3-2窗口后,相应变量的缺失(Missing)列上将自动显示*,表示允许相应变量取用户缺失值。
这里,无偿献血中的l和0虽然是不合理取值,但自动修正是无意义的,因此在定义空白(Defineblanks)中说明;
家庭人均年收入中的999999和$null$值需要修正和替补,所以不应在定义空白(Defineblanks)中说明,仅视999999为超出取值范围的不合理取值。
返回图3-2窗口后,无偿献血的缺失(Missing)列上显示*,家庭人均年收入的缺失(Missing)列上没有显示。
3.1.2变量取值有效性检查和修正
当指定了变量值取值范围后,通常还需利用图3-2中的检查(Check)列,对超出取值范围的不合理数据或系统缺失值进行修正。
例如,需对家庭人均年收入中的999999和$null$值进行修正和替补,如图3-5所示。
图3-5类型(Type)节点中的检查(Check)处理
通常的修正处理方式如下。
●无(None):
不进行修正。
●无效(Nullify):
用系统缺失值$null$替代。
●强制(Coerce):
用一指定值替代。
Clementine默认,二分(Flag)型变量用False对应的值替代;
多分类型(Set)变量用第一个变量值替代;
数值型变量,大于上限的用上限值替代,小于下限的用下限值替代,其余值用(最大值+最小值)/2替代。
这里,对家庭人均年收入中的系统缺失值$null$和999999进行了替换和修正处理。
对于是否无偿献血中的不合理取值(1或0),根据替换规则将全部替换为No,显然不符合实际要求,利用类型(Type)节点无法处理。
其具体处理见3.3节。
●丢弃(Discard):
剔除相应样本数据。
●警告(Warm):
给出警告信息。
●中止(Abort):
终止流执行。
3.1.3变量角色的说明
所谓变量角色是指变量在模型建立时的角色。
角色不同,变量的作用也不同。
通常建模中,有的变量是用于解释其他变量的,被称为解释变量或自变量。
Clementine形象地称之为输入变量。
有的变量则需被其他变量所解释,被称为被解释变量或因变量,Clementine称之为输出变量。
例如,在分析客户收入对其消费的影响时,收入就是输入变量,消费就是输出变量。
变量角色的说明也称变量方向的说明,可通过图3-2中的方向(Direction)列指定,如图3-6所示。
图3-6类型(Type)节点中的方向(Direction)说明
Clementine将变量角色进行了拓展。
●输入(In):
变量将作为输入变量。
●输出(Out):
变量将作为输出变量。
●两者(Both):
某些模型中,有的变量既可作为输入角色,也可作为输出角色。
例如,在根据客户的收入和消费数据,将客户划分成不同客户群的分析中,收入和消费既
是输入变量也是输出变量,担当着两者(Both)角色。
●分区(Partition):
是数据挖掘中的特有角色,用于模型建立过程中样本子集的分割。
作为样本集分割角色的变量应是一个多分类型变量,且只能有两个或三个变量值。
其中,第一个变量值作为训练样本集标记,第二个作为检验样本集标记;
第三个作为诊断样本集标记。
关于样本集分割将在3.6节中讲解。
如果某变量不参与数据建模,则可指定它为无(None)角色。
Typeless类型变量自动默认为无(None)角色。
这里,为分析学生是否参加某次社会公益活动受哪些因素的影响,指定学生的编号为无(None)角色,是否参与为输出变量,其他变量为输入变量。
3.2变量值的重新计算
通过变量说明和浏览,会发现变量取值中可能存在的问题。
例如,学生参加某次社会公益活动的数据中,在校综合评价指数本身很难直观反映学生的水平,因为不知道该变量取值的理论上限;
再如,数据中很有可能出现空白数据,但Clementine的类型(Type)节点不对空白进行修正,这在一定程度上会影响分析,等等。
因此,对变量值的重新计算是必要的,应通过字段选项(FieldOps)卡中的填充(Filler)节点实现。
变最值重新计算的核心是描述计算方法。
通常需利用Clementine的CLEM表达式表述计算规则。
3.2.1CLEM表达式
CLEM(ClementineLanguageforExpressionManipulation)是Clementine专门用于表述运算操作的语言。
CLEM所描述的算术表达式是由常量、变量、运算符、函数等组成的式子。
●常量:
运算过程中值不发生变化的量。
不同类型常量的具体表现形式不同,如整
型(Integer)或实型(Real)常量表现为具体的数字,如150、265.87等;
字符
串型(String)常量表现为具体的字符,如“Beijing”等,应用双引号括起来。
●变量:
运算过程中其值可以发生变化的量,用于反映事物的某个特征。
●运算符:
包括算术运算符和逻辑运算符。
算术运算符有:
+(加)、一(减)、*(乘)、/(除)、**(乘方)、div(整除)和rem(取余数)。
另外,还有专用于字符串的操作符号>
<
,表示两字符串做头尾连接运算。
可利用括号改变原有的运算顺序。
逻辑运算符是用于逻辑运算的。
在实际问题中,如果只对满足一定条件的样本进行计算,则应首先通过逻辑运算给出条件。
逻辑运算符有:
>
(大于)、>
=(大于等于)、<
(小于)、<
=(小于等于)、=(等于)、/=(不等于)、and(并且)、or(或者)、not()(否)。
●函数:
是Clementine提供的实现某个特定计算功能的程序段,应通过函数名(参
数)的形式引用它们。
函数包括普通函数和专业函数。
普通函数从功能角度可划分为算术函数和三角函数、随机函数、字符串函数、类型转换函数和日期时间函数等;
专业函数主要用于统计分析计算和缺失值的处理等。
专业函数通常以@开头,且函数名均为大写字母。
专业函数在Clementine中有很重要的作用。
表3-1给出了各种常用函数的形式、结果类型和功能说明。
日期时间函数较多,不在此一一列出,可参见Clementine帮助手册。
表3-1(a)常用算术函数和三角函数
函数
结果类型
功能说明
abs(NUM)
Number
返回NUM的绝对值,计算结果与NUM同类型
exp(NUM)
Real
返回e的NUM次幂,这里e是自然对数底
intof(NUM)
Integer
将NUM截尾成一整数,返回与NUM相同符号的最大整数
续表
fracof(NUM)
返回NUM的小数部分,即NUM—intof(NUM)
loge(NUM)
返回NUM的自然对数(底为e),NUM不能为0或负数
Loge10(NUM)
返回NUM的对数(底为10),NUM不能为0或负数
negate(NUM)
返回NUM的相反数,计算结果与NUM同类型
round(NUM)
将NUM向上取整。
若NUM为正则等于intof(NUM+0.5)否则为intof(NUM—0.5)
sign(NUM)
返回NUM的符号。
若NUM为整数,则负、零和正,对应的返回值依次为—1、0、1。
若NUM为实数,则依次返回—1.0、0.0、1.0
sqrt(NUM)
返回NUM的平方根,NUM为正数
sin(NUM)
返回正弦值
cos(NUM)
返回余弦值
tan(NUM)
返回正切值
undef
Any
返回$null$值
pi
返回π的实数估计值
表3-1(b)常用随机函数
oneof(LIST)
返回从LIST中随机选取的一个数据项。
LIST的格式为[ITEM1,ITEM2...ITEM_N]
Random(NUM)
随机生成(0,NUM)之间的随机数,随机数类型取决于NUM的类型
表3-1(c)常用字符串函数
allbutfirst(N,STRING)
String
返回一个字符串,它是STRING的前N个字符被删除后的字符串
allbutlast(N,STRING)
返回一个字符串,它是STRING的后N个字符被删除后的字符串
isstartstring(SUBSTRING,STRING)
若STRING以SUBSTRING开始,则返回1;
否则返回0
isendstring(SUBSTRING,STRING)
若STRING以SUBSTRING结尾,则返回SUBSTRING在STRING中的下标,否则返回0
ismidstring(SUBSTRING,STRING)
若SUBSTRING是STRING的字符串,但不是从第一个字符开始或以最后一个字符结束,则返回子串开始处的下标,否则返回0
alphabefore(STRING1,STRING2)
Boolean
若STRING1先于STRING2,则返回真;
issubstring(SUBSTRING,STRING)
从第N个字符开始查找STRING中等于SUBSTRING的子串,若找到则返回匹配开始的下标;
否则返回0。
若N没有给定,则默认N为1
续表
last(STRING)
返回STRING中最后一个字符
length(STRING)
integer
返回字符串STRING的长度
lowertoupper(STRING)
将其所有小写字母转化为相应的大写字母
uppertolower(STRING)
将其所有大写字母转化为相应的小写字母
stripchar(CHAR,STRING)
从STRING中删除字符CHAR
substring(N,LEN,STRING)
返回STRING中开始于下标N,长度为LEN的子串
isalphacode(CHAR)
若CHAR的字符编码为字母则返回真;
isnumbercode(CHAR)
若CHAR的字符编码为数字则返回真;
islowercode(CHAR)
若CHAR为小写字母则返回真;
isuppercode(CHAR)
若CHAR为大写字母则返回真;
表3-1(d)常用类型转换函数
to_integer(ITEM)
将指定变量转换为整型数
to_real(ITEM)
将指定变量转换为实型数
to_string(ITEM)
将指定变量转换为字符串型
to_time(ITEM)
Time
将指定变量转换为时间型
to_date(ITEM)
Date
将指定变量转换为日期型
to_timestamp(ITEM)
Timestamp
将指定变量转换为时间戳型
表3-1(e)常用专业函数
@MEAN(FIELD)
返回第一个样本到当前样本中变量FIELD的均值
@MEAN(FIELD,EXPR)
返回包括当前样本在内的前EXPR个样本中变量FIELD的均值
@DIFF1(FIELD)
返回变量FIELD的一阶差分值
@DIFF2(FIELD)
返回变量FIELD一阶差分值的一阶差分值
@MAX(FIELD)
返回第一个样本到当前样本中变量FIELD的最大值
@MAX(FIELD,EXPR)
返回包括当前样本在内的前EXPR个样本中变量FIELD的最大值
@MIN(FIELD)
返回第一个样本到当前样本中变量FIELD的最小值
@MIN(FIELD,EXPR)
返回包括当前样本在内的前EXPR个样本中变量FIELD的最小值
@SDEV(FIELD)
返回第一个样本到当前样本中变量FIELD的标准差
@SDEV(FIELD,EXPR)
返回包括当前样本在内的前EXPR个样本中变量FIELD的标准差
@SINCE(EXPR)
返回从上一次表达式EXPR为真的样本到当前样本(不包括当前样本)之间相隔的样本数
@SUM(FIELD)
返回第一个样本到当前样本中变量FIELD的总和
@SUN(FIELD,EXPR)
返回包括当前样本在内的前EXPR个样本中变量FIELD的总和
@INDEX
返回当前样本序号
@FIELD
代指当前节点中的任一变量
@TODAY
返回当前机器日期
@BLANK(FIELD)
若当前样本在变量FIELD上取空白,则返回真;
@NULL(FIELD)
若当前样本在变量FIELD上取系统缺失值$null$,则返回真;
需要说明的是,算术表达式中的常量、变量和函数的存储类型应一致;
计算结果为布尔型(Boolean)的函数,其函数值不能保存到变量中,因为Clementine变量的存储类型中没有Boolean型的定义,这些函数仅用于条件判断。
3.2.2变量值重新计算示例
这里,仍以学生参加某次社会公益活动的数据(文件名为Students.xls)为例,讲解变量值重新计算的具体操作方法。
计算目标是对在校综合评价指数进行标准化处理,以使其能够直观反映学生在校综合水平。
计算方法为极差法,即(在校综合评价指数一在校综合评价指数的最小值)/(在校综合评价指数的最大值一在校综合评价指数的最小值)×
100%。
首先,选择字段选项(FieldOps)卡中的填充(Filler)节点并将其与3.1节的类型(Type)节点相连,鼠标右击填充(Filler),选择弹出菜单中的编辑(Edit)选项,所显示的参数设置窗口如图3-7所示。
图3-7填充(Filler)节点的参数设置窗口
具体参数设置如下。
●输入字段(Fillinfields)框:
指定一个或多个需重新计算的变量名,可以手工输入也可以按右边的钮进行选择。
这里,选择的变量是在校综合评价指数。
●替换为(Replacewith)框:
指定重新计算的计算方法,可以手工输入CLEM算术表达式,也可按右边计算器按钮借助Clementine的CLEM输入面板输入,如图3-8所示。
图3-8Clementine的CLEM输入面板
面板左边列出了所有CLEM函数,中间是运算符,右边是所有变量的相关信息。
用户可通过鼠标进行选择输入,还可按检查(Check)钮对所输入的算术表达式的正确性进行检查。
这里,输入本例的计算方法,其中在校综合评价的最大值和最小值已通过类型(Type)节点得知了。
●替换(Replace)选项:
提供了如下几种重新计算的条件。
■根据以下条件(Basedoncondition)表示只对满足一定条件样本的变量值进行重新计算,条件应在条件(Condition)框中输入。
例如,@BLANK(@FIELDS),表示的条件是如果节点中任一变量的变量值为空白,则进行重新计算;
■始终(Always)表示所有样本都重新计算;
■空值(Blankvalues)表示用替换为(Replacewith)框的计算结果替代变量中的空白;
■无效值(Nullvalues)表示用替换为(Replacewith)框的计算结果替代变量中的系统缺失值$null$;
■空值与无效值(Blankandnullvalues)表示用替换为(Replacewith)框的计算结果替代变量中的空白和系统缺失值$null$。
可通过输出(Output)选项卡中的表(Table)节点浏览重新计算以后的数据,可以看到在校综合评价指数均调整到0~100之间,变量值的含义更直观了。
3.3变量类别值的调整
在实际数据分析中,分类型变量的取值有时也需要调整。
例如,为大致判断人的不同性格,可设计一系列问题和备选答案,并给各个备选答案计以不同的分值。
被判断者需要首先回答问题,然后计算自己的总得分,并根据总得分大致判断自己是属于哪种性格。
这样的调查极为常见,其中的关键是问题的设计。
如果现只有三个问题分别是:
你遇到陌生人,会“自来熟”吗?
你经常在公开场合发表自己的意见吗?
你见到不熟悉的异性会经常脸红吗?
备选答案为:
经常、偶尔、从不,分别计1、2、3分。
同时规定总分达9分的为特别开朗型,总分为3的为特别内向型,3~9分之间的为普通型。
可以看到,这里第3题是与前两题提问方向相反的题,称为反向计分题。
反向计分题的答案数据应首先进行调整,否则必然影响后续的分值计算和判断。
因此,这里需要将第3题原来的1分调整为3分,将原来的3分调整为1分,2分保持不变。
再如,仍是学生参加某次社会公益活动的数据,是否无偿献血取值不规范,取值1和0应分别调整为Yes和No。
对于上述问题,如果用3.2节的填充(Filler)节点做变量值重新计算,不仅很烦琐,更重要的是无法实现反向计分题的重新计分。
解决方法是利用变量类别值调整功能,通过字段选项(FieldOps)卡中的重新分类(Reclassify)节点实现。
这里,将围绕调整无偿献血变量值的问题,讨论其具体操作。
首先,选择字段选项(FieldOps)卡中的重新分类(Reclassify)节点并将其连接到数据流的适当位置上,鼠标右击,选择弹出菜单中的编辑(Edit)选项,所显示的参数设置窗口如图3-9所示。
图3-9重新分类(Reclassify)的参数设置窗口
具体参数设置如下。
●模式(Mode)选项:
单个(Single)表