Clementine2变量管理.docx

上传人:b****1 文档编号:1915865 上传时间:2023-05-02 格式:DOCX 页数:33 大小:884.31KB
下载 相关 举报
Clementine2变量管理.docx_第1页
第1页 / 共33页
Clementine2变量管理.docx_第2页
第2页 / 共33页
Clementine2变量管理.docx_第3页
第3页 / 共33页
Clementine2变量管理.docx_第4页
第4页 / 共33页
Clementine2变量管理.docx_第5页
第5页 / 共33页
Clementine2变量管理.docx_第6页
第6页 / 共33页
Clementine2变量管理.docx_第7页
第7页 / 共33页
Clementine2变量管理.docx_第8页
第8页 / 共33页
Clementine2变量管理.docx_第9页
第9页 / 共33页
Clementine2变量管理.docx_第10页
第10页 / 共33页
Clementine2变量管理.docx_第11页
第11页 / 共33页
Clementine2变量管理.docx_第12页
第12页 / 共33页
Clementine2变量管理.docx_第13页
第13页 / 共33页
Clementine2变量管理.docx_第14页
第14页 / 共33页
Clementine2变量管理.docx_第15页
第15页 / 共33页
Clementine2变量管理.docx_第16页
第16页 / 共33页
Clementine2变量管理.docx_第17页
第17页 / 共33页
Clementine2变量管理.docx_第18页
第18页 / 共33页
Clementine2变量管理.docx_第19页
第19页 / 共33页
Clementine2变量管理.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Clementine2变量管理.docx

《Clementine2变量管理.docx》由会员分享,可在线阅读,更多相关《Clementine2变量管理.docx(33页珍藏版)》请在冰点文库上搜索。

Clementine2变量管理.docx

Clementine2变量管理

Clementine变量管理

——[流3(3.1,3.2,3.3).str,流3(3.4).str,流3(3.5,3.6).str]

第3章Clementine变量的管理

数据挖掘的数据通常以变量为列、样本为行的二维表形式组织,所以,Clementine数据的基本管理包括变量管理和样本管理两大方面。

变量管理和样本管理是数据准备的重要方面,是建立数据模型的前提和基础。

本章将集中讨论变量管理。

变量管理以变量为基本单位,实现变量说明、变量值的重新计算、变量类别值的调整、生成新变量、变量值的离散化处理、生成样本集分割变量等目标。

变量管理的节点工具放置在节点工具箱的字段选项(FieldOps)卡中,具体节点如图3-1所示。

图3-1字段选项(FieldOps)卡中的节点工具

3.1变量说明

变量说明是对读入数据流中变量取值的有效性进行限定、检查和修正,同时指明各个

变量在未来建模中的角色。

一方面,变量说明是确保高质量数据的有效手段,另一方面也

是明确变量建模地位的重要途径。

变量说明应通过字段选项(FieldOps)卡中的类型(Type)节点实现。

这里,以学生参加某次社会公益活动的数据(文件名为Students.xls)为例,讲解变

量说明的具体操作方法。

首先,按照读入Excel电子表格数据的操作方法建立Excel节点读入Students.xls数

据。

浏览数据发现:

●家庭人均年收入变量中有部分样本取$null$,为系统缺失值;还有一个由于不明原因

而明显错误的数据999999。

应对它们进行恰当修正。

●是否无偿献血变量值填写不规范,规范值应为Yes和No,但出现了l(表示Yes)

和0(表示No)。

应将l替换为Yes,0替换为No。

为处理上述问题,选择字段选项(FieldOps)卡中的类型(Type)节点并将其连接到数据流的相应位置上,右击鼠标,选择弹出菜单中的编辑(Edit)选项,所显示的参数设置窗口如图3-2所示。

图3-2类型节点的参数设置窗口

这里,从缺失值(Missing)、变量取值有效性检查和修正(Check)、变量方向(Direction)三个方面进行说明。

3.1.1取值范围和缺失值的说明

取值范围即指变量正常值的区间。

缺失值通常包括两类:

一类是系统缺失值,Clementine用$null$表示,还包括空格或空白等。

另一类是用户缺失值,主要指那些取值明显不合理的数据。

这里,首先,添加变量值标签以规范是否无偿献血的取值,指定用户缺失值;其次,说明家庭人均年收入的合理取值范围。

为此,应分别选择是否无偿献血和家庭人均年收入变量,鼠标选择图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):

如果某变量不参与数据建模,则可指定它为无(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)

Real

返回NUM的小数部分,即NUM—intof(NUM)

loge(NUM)

Real

返回NUM的自然对数(底为e),NUM不能为0或负数

Loge10(NUM)

Real

返回NUM的对数(底为10),NUM不能为0或负数

negate(NUM)

Number

返回NUM的相反数,计算结果与NUM同类型

round(NUM)

Integer

将NUM向上取整。

若NUM为正则等于intof(NUM+0.5)否则为intof(NUM—0.5)

sign(NUM)

Number

返回NUM的符号。

若NUM为整数,则负、零和正,对应的返回值依次为—1、0、1。

若NUM为实数,则依次返回—1.0、0.0、1.0

sqrt(NUM)

Real

返回NUM的平方根,NUM为正数

sin(NUM)

Real

返回正弦值

cos(NUM)

Real

返回余弦值

tan(NUM)

Real

返回正切值

undef

Any

返回$null$值

pi

Real

返回π的实数估计值

表3-1(b)常用随机函数

函数

结果类型

功能说明

oneof(LIST)

Any

返回从LIST中随机选取的一个数据项。

LIST的格式为[ITEM1,ITEM2...ITEM_N]

Random(NUM)

Number

随机生成(0,NUM)之间的随机数,随机数类型取决于NUM的类型

表3-1(c)常用字符串函数

函数

结果类型

功能说明

allbutfirst(N,STRING)

String

返回一个字符串,它是STRING的前N个字符被删除后的字符串

allbutlast(N,STRING)

String

返回一个字符串,它是STRING的后N个字符被删除后的字符串

isstartstring(SUBSTRING,STRING)

Integer

若STRING以SUBSTRING开始,则返回1;否则返回0

isendstring(SUBSTRING,STRING)

Integer

若STRING以SUBSTRING结尾,则返回SUBSTRING在STRING中的下标,否则返回0

ismidstring(SUBSTRING,STRING)

Integer

若SUBSTRING是STRING的字符串,但不是从第一个字符开始或以最后一个字符结束,则返回子串开始处的下标,否则返回0

alphabefore(STRING1,STRING2)

Boolean

若STRING1先于STRING2,则返回真;否则返回0

issubstring(SUBSTRING,STRING)

Integer

从第N个字符开始查找STRING中等于SUBSTRING的子串,若找到则返回匹配开始的下标;否则返回0。

若N没有给定,则默认N为1

续表

函数

结果类型

功能说明

last(STRING)

String

返回STRING中最后一个字符

length(STRING)

integer

返回字符串STRING的长度

lowertoupper(STRING)

String

将其所有小写字母转化为相应的大写字母

uppertolower(STRING)

String

将其所有大写字母转化为相应的小写字母

stripchar(CHAR,STRING)

String

从STRING中删除字符CHAR

substring(N,LEN,STRING)

String

返回STRING中开始于下标N,长度为LEN的子串

isalphacode(CHAR)

Boolean

若CHAR的字符编码为字母则返回真;否则返回0

isnumbercode(CHAR)

Boolean

若CHAR的字符编码为数字则返回真;否则返回0

islowercode(CHAR)

Boolean

若CHAR为小写字母则返回真;否则返回0

isuppercode(CHAR)

Boolean

若CHAR为大写字母则返回真;否则返回0

表3-1(d)常用类型转换函数

函数

结果类型

功能说明

to_integer(ITEM)

Integer

将指定变量转换为整型数

to_real(ITEM)

Real

将指定变量转换为实型数

to_string(ITEM)

String

将指定变量转换为字符串型

to_time(ITEM)

Time

将指定变量转换为时间型

to_date(ITEM)

Date

将指定变量转换为日期型

to_timestamp(ITEM)

Timestamp

将指定变量转换为时间戳型

表3-1(e)常用专业函数

函数

结果类型

功能说明

@MEAN(FIELD)

Real

返回第一个样本到当前样本中变量FIELD的均值

@MEAN(FIELD,EXPR)

Real

返回包括当前样本在内的前EXPR个样本中变量FIELD的均值

@DIFF1(FIELD)

Real

返回变量FIELD的一阶差分值

@DIFF2(FIELD)

Real

返回变量FIELD一阶差分值的一阶差分值

@MAX(FIELD)

Number

返回第一个样本到当前样本中变量FIELD的最大值

@MAX(FIELD,EXPR)

Number

返回包括当前样本在内的前EXPR个样本中变量FIELD的最大值

@MIN(FIELD)

Number

返回第一个样本到当前样本中变量FIELD的最小值

@MIN(FIELD,EXPR)

Number

返回包括当前样本在内的前EXPR个样本中变量FIELD的最小值

@SDEV(FIELD)

Real

返回第一个样本到当前样本中变量FIELD的标准差

@SDEV(FIELD,EXPR)

Real

返回包括当前样本在内的前EXPR个样本中变量FIELD的标准差

续表

函数

结果类型

功能说明

@SINCE(EXPR)

Any

返回从上一次表达式EXPR为真的样本到当前样本(不包括当前样本)之间相隔的样本数

@SUM(FIELD)

Number

返回第一个样本到当前样本中变量FIELD的总和

@SUN(FIELD,EXPR)

Number

返回包括当前样本在内的前EXPR个样本中变量FIELD的总和

@INDEX

Integer

返回当前样本序号

@FIELD

Any

代指当前节点中的任一变量

@TODAY

String

返回当前机器日期

@BLANK(FIELD)

Boolean

若当前样本在变量FIELD上取空白,则返回真;否则返回0

@NULL(FIELD)

Boolean

若当前样本在变量FIELD上取系统缺失值$null$,则返回真;否则返回0

需要说明的是,算术表达式中的常量、变量和函数的存储类型应一致;计算结果为布尔型(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)表

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2