引言
数据挖掘软件 IBM SPSS Modeler 以用户界面友好、可视化功能强大著称。关于其脚本功能,参考资 料很少。作者认为,脚本功能实际上旨在实现数据处理和分析建模过程的自动化。在需要动态改变数据处 理过程、数据流自动执行和自动执行批量任务等应用场景下,必须补充编写一些脚本才能完成某些特定功 能。所以,脚本功能是用户界面的必要补充,而不仅仅是用户界面鼠标操作功能的代码化。
SPSS Modeler 自带的脚本编写用户指南没有按照脚本功能的常用应用场景组织内容,这给脚本编写人 员参考查阅造成一定的不便。同时,缺少完整的实用的例子,给出的例子多数是模拟用户界面上的常用操 作。而实际情况是编写脚本通常是为了补充用户界面上很少使用或者不能实现的功能。作者就经常为找不 到可以参考的例子而苦恼。
本文首先介绍用户界面上无法或者不便实现而必须编写脚本的常见的五种应用场景。每种场景下均给 出完整的应用实例,重点介绍脚本编写的方法和技巧。在第二节,基于作者经验,总结了编写脚本的常用 技巧。本文所附的实例均来自实际项目,且在 SPSS Modeler 15.0 环境下测试通过。
脚本功能的应用场景
什么情况下需要脚本功能?根据作者的经验,遇到下列情况应考虑使用脚本功能:需要重复执行某些 数据处理;需要动态改变数据处理的过程;数据流最终需要部署到第三方环境;数据流需要自动执行 ( 而不是鼠标操作执行 );需要批量修改已有的数据流或者自动执行批量任务。
重复执行的数据处理
我们知道,Modeler 数据流默认都是顺序执行的,多个节点的依次连接而成的数据流提前指定了数据 处理的顺序。然而,实际建模中经常会遇到部分数据流需要重复多次执行,且可能带参数,这时手工执行 就很不方便。同时,可能需要根据某个变量的取值重复执行一段数据流 ( 实现动态循环 ),这种情况下 就必须借助脚本来实现。
图 1 所示的数据流来自是一个预测产品销售的时间序列模型。需要分别预测每个销售分支机构 (IMT) 在未来一个季度的销售总额。当销售机构较多 (=21) 且动态变化时,需要根据 Table 节点 IMT_List 的 输出结果,循环多次逐行取出 IMT 的取值,然后根据此值设置 Select1 和 IMT 节点,从而实现动态的 重复执行的数据处理。这里的主要技巧是从 Table 节点循环取数。
图 1. 从 Table 节点循环取数
图 1 中方框内的三个节点是脚本涉及的主要部分,对应的脚本内容如下:
清单 1 脚本内容 - 从 Table 节点循环取数
清单 1. 脚本内容 - 从 Table 节点循环取数
脚本编写的要点:执行 Table 节点读取所有的循环变量取值。利用 Result 对象的 output 属性和 Value 命令逐个读取循环变量的取值。使用 set 命令为多个节点动态赋值。