
數據挖掘 SPSS Modeler 腳本功能的應用場景和編寫技巧
數據挖掘軟件 IBM SPSS Modeler 以用戶界面友好、可視化功能強大著稱。關于其腳本功能,參考資料很少。作者認為,腳本功能實際上旨在實現數據處理和分析建模過程的自動化。在需要動態改變數據處理過程、數據流自動執行和自動執行批量任務等應用場景下,必須補充編寫一些腳本才能完成某些特定功能。所以,腳本功能是用戶界面的必要補充,而不僅僅是用戶界面鼠標操作功能的代碼化。
SPSS Modeler 自帶的腳本編寫用戶指南沒有按照腳本功能的常用應用場景組織內容,這給腳本編寫人員參考查閱造成一定的不便。同時,缺少完整的實用的例子,給出的例子多數是模擬用戶界面上的常用操作。而實際情況是編寫腳本通常是為了補充用戶界面上很少使用或者不能實現的功能。作者就經常為找不到可以參考的例子而苦惱。
本文首先介紹用戶界面上無法或者不便實現而必須編寫腳本的常見的五種應用場景。每種場景下均給出完整的應用實例,重點介紹腳本編寫的方法和技巧。在第二節,基于作者經驗,總結了編寫腳本的常用技巧。本文所附的實例均來自實際項目,且在 SPSS Modeler 15.0 環境下測試通過。
什么情況下需要腳本功能?根據作者的經驗,遇到下列情況應考慮使用腳本功能:需要重復執行某些數據處理;需要動態改變數據處理的過程;數據流最終需要部署到第三方環境;數據流需要自動執行 ( 而不是鼠標操作執行 );需要批量修改已有的數據流或者自動執行批量任務。
我們知道,Modeler 數據流默認都是順序執行的,多個節點的依次連接而成的數據流提前指定了數據處理的順序。然而,實際建模中經常會遇到部分數據流需要重復多次執行,且可能帶參數,這時手工執行就很不方便。同時,可能需要根據某個變量的取值重復執行一段數據流 ( 實現動態循環 ),這種情況下就必須借助腳本來實現。
圖 1 所示的數據流來自是一個預測產品銷售的時間序列模型。需要分別預測每個銷售分支機構 (IMT) 在未來一個季度的銷售總額。當銷售機構較多 (=21) 且動態變化時,需要根據 Table 節點 IMT_List 的輸出結果,循環多次逐行取出 IMT 的取值,然后根據此值設置 Select1 和 IMT 節點,從而實現動態的重復執行的數據處理。這里的主要技巧是從 Table 節點循環取數。
點擊查看大圖
圖 1 中方框內的三個節點是腳本涉及的主要部分,對應的腳本內容如下:
清單 1 腳本內容 - 從 Table 節點循環取數
腳本編寫的要點:執行 Table 節點讀取所有的循環變量取值。利用 Result 對象的 output 屬性和 Value 命令逐個讀取循環變量的取值。使用 set 命令為多個節點動態賦值。
SPSS Modeler 數據流默認都是順序執行的,多個節點的依次連接而成的數據流預先指定了數據處理過程。如果需要改變順序執行為根據條件執行不同的流分支,則需要使用腳本 if...then...else... 命令。
下面的實例來自一個銷售績效評估項目,需要根據用戶命令行參數的設置自動選擇執行不同的數據流分支。具體來說,根據命令行參數,自動選擇是否重新訓練模型和根據不同季度選擇不同的數據調整方法。
這個數據流在用戶界面上調試時,不需要腳本,但是當部署完成集成到生產環境下自動執行時,就必須編寫一些腳本以實現根據命令行參數動態選擇不同的數據處理過程。本例的腳本如下:
腳本編寫的要點:使用 if...then...else... 命令,結合 CLEM 表達式和腳本參數,實現根據命令行參數動態選擇不同的數據處理過程。
構建好的數據流可能需要部署到第三方環境下使用。此時,數據流的執行往往不同于 SPSS Modeler 環境,有些情況下必須編寫一點腳本,以實現預設的功能。
最簡單的部署數據流的方法是使用 SPSS Modeler 批處理方式 (Batch Mode) 在第三方環境通過執行批命令來執行數據流。另外一種常用的部署方法是使用 Solution Publisher 在第三方環境執行數據流。下面就這兩種部署方法分別給出一個應用實例。圖 3 是一個資產效能優化項目中展示變壓器報警分布情況的數據流。
在用戶界面上操作時不需要右邊圖示的腳本,但如果需要把這個流文件部署到第三方環境執行時,就必須增加這些腳本,且必須設置為與數據流同步執行 ( 選擇 Run this script)。否則會提示輸入數據庫源節點的 Password 且不會自動執行三個圖形輸出節點。對應的執行這個數據流的批命令文件的內容如下:
批處理命令
...\clemb.exe -hostname IP -port 28052 -username UN -password PW -stream "...\Alarm Distribution Pattern Transformer.str" -execute -server -appendlog
下面的例子是一個資產效能優化項目中預測鐵路設備故障的數據流。
這些腳本在部署環境下執行必須編寫,否則提問密碼,而且不能更新模型和輸出預測結果。所以,用戶界面下正常執行的數據流,在完成部署并自動執行的情況下,有些功能必須借助腳本來實現。特別需要注意的是:如果沒有 insert model 這行腳本,模型就不能正常更新。沒有腳本 execute 'Alarm Rail',預測結果就不能輸出到指定的數據庫表。對應的調用 Solution Publisher 執行這個數據流的批命令文件的內容如下:
批處理命令
"...\modelerrun.exe" -p "...\Alarm_Prediction_Rail.par" "...\Alarm_Prediction_Rail.pim"
構建好的數據流可能需要部署到正式的生產環境,這時通常需要定期地自動執行這些數據流。直接復制用戶界面調試好的數據流 ( 手工執行 ),當在生產環境自動執行時,有些功能就可能不能實現。
自動執行數據流有三種模式:Batch 模式、Client 模式和 Solution Publisher 模式。對應的可執行文件分別為:clemb.exe、modelerclient.exe 和 modelerrun.exe。前兩種模式的典型命令行命令如下:
命令
clemb/modelerclient -server -hostname myserver -port 80 -username dminer -password 1234 -stream mystream.str -execute
對于 Solution Publisher 模式,在 Command Line 窗口下的執行命令如下:
命令
modelerrun – p *.par *.pim
當需要自動執行數據流時,原先在用戶界面上調試好的,即手工執行的數據流可能需要補充一些腳本以實現指定的功能。例如,建模節點的自動執行、模型節點的自動更新、導出類節點 (Export) 的結果導出等都需要編寫腳本。
圖 5 所示是一個資產效能優化項目中挖掘變壓器失效與 DCS 監控數據異常的關聯規則的數據流。這個數據流需要使用 Solution Publisher 部署到第三方環境自動執行,同時需要輸出關聯規則到數據庫。由于 Solution Publisher 只支持二維數據的輸出而不能輸出關聯規則模型本身,所以難點在于如何自動更新模型并輸出關聯規則模型本身的結果到 Oracle 數據庫表,這就需要編寫腳本。這個實例的特點是同時實現了建模節點的自動執行、模型節點的自動更新和導出節點的結果保存。
點擊查看大圖
腳本編寫的要點:使用 set 命令提前設置數據庫密碼。使用 export model 命令輸出關聯規則模型為純文本文件。使用 Export 節點把純文本格式的關聯規則輸出到數據庫。
實際應用中可能會遇到需要批量修改已有的數據流,以提高模型構建效率或者適用不同的客戶項目。例如,可能需要把所有字段名修改為大寫字母。手工修改對于節點或字段較多時就不方便。
下面的例子來自一個資產效能優化項目。以前調試好的數據流,原先數據導出到 Excel 表,現在客戶環境發生變化需要導出到 Oracle 數據庫。由于 Oracle 數據庫的庫表名稱和字段名稱必須用大寫字母且不能有空格,所以需要批量替換所有的 Filter 節點的小寫字母和中間空格。手工修改對于 Filter 節點較多或字段較多時不方便,可以使用腳本自動修改。下面一段腳本,可以實現類似于圖 6 所示的 Filter 節點 (Filter_Out) 的所有 Filter 節點的字段名稱的大寫轉換和空格到下劃線的轉換。
腳本編寫的要點:搜索當前數據流中包含的所有 Filter 節點,然后逐個節點對新的字段名稱逐個進行大寫轉換,并把中間空格替換為下劃線。使用了 set 命令、循環語句和條件語句。
SPSS Modeler 腳本功能是輔助的,鼠標操作是其基本的使用方式。所以,有些看似功能類似的腳本在實際運行時的效果不同于鼠標操作。常見情況可分為三種:
? 腳本中使用的節點需要重新命名。不同于鼠標操作模式,在運行腳本時不能出現重名的節點,否則報錯。
? 建模節點的腳本執行不會自動更新模型節點 (Nugget)。例如,圖 5 所示腳本的命令 execute 'Apriori1'僅執行建模節點'Apriori1'并把建好的模型節點放到管理器,而不自動更新工作區的模型節點,需要編寫腳本把模型節點插入 ( 使用命令 insert model)。
? 使用腳本執行數據流時,末端的圖形或數據的輸出節點不會自動執行。例如,本文“1.3 部署到第三方環境的數據流”一節圖 3 所示的例子,在用戶界面上,點擊按鈕“運行當前流”(Run the current stream),所有末端的輸出節點自動執行,但當部署到第三方環境執行這個數據流時,就需要在這個數據流上附加腳本才能完成輸出。
屏蔽文件覆蓋的提問:腳本自動執行時不希望中間跳出窗口提問是否覆蓋文件。這個功能沒有對應的腳本命令,只能使用菜單改變該數據流的用戶選項 (Tools...Options...User Options),不選 Warn when a node overwrites a file。
調試方法:沒有提供調試功能,只能點擊按鈕 Run selected lines only,選擇部分腳本運行。
自動刷新數據源節點:當原始數據改變時,需要刷新對應的數據源節點。使用命令 set ^stream.refresh_source_nodes = True 實現所有數據源節點的自動刷新。
屏蔽數據源密碼提問:對應通過 ODBC 連接的數據庫數據源,數據流自動執行時會提問密碼。屏蔽這種提問的命令:set 'Database1':databasenode.password = "mypassword"
模型節點的自動更新:不同于鼠標操作,腳本執行建模節點不會自動更新對應的模型節點。需要使用 insert model 命令更新模型。如果需要同時更新多個模型節點,還需使用 duplicate 命令。例如,下列腳本根據建模節點 AutoNumeric 的執行結果,自動更新 Actual2 和 Actual3 兩個模型節點:
execute 'AutoNumeric'
insert model Actual2 connected between 'Type2':typenode and 'AFFV_AR_Q1':derivenode
duplicate Actual2 as Actual3 connected between 'Type3':typenode and 'Filter3':filternode
清除已有的模型節點:常用命令有三種,注意它們的區別。
delete Actual2 ( 命令 delete NODE) 從工作區上刪除模型節點;
clear generated palette 清除管理器上的所有模型節點;
delete model Actual2 清除管理器上而不是刪除工作區的模型節點。
高級腳本功能需要使用對象 (Object):常用的對象有四種:Output; Node; Model; Result。每類對象都有一些專用的命令用于定義和檢索這些對象,例如 get output; execute 'Node1'; export model; value 'Result1' at Row1 Column1。詳細命令參見用戶指南第四章內容 (Scripting Commands)。例如,根據 Table 節點的輸出讀取循環變量,就可使用 Result 對象的 value 命令。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25