0.はじめに
SPSS Modelerは一般的に利用される豊富な機能を持っていますが、RやPythonの機能を使いたいこともあります。SPSS Modelerには拡張ノードという機能があり、SPSSからRやPythonを呼び出すことができます。
今回はPython連携を行ってみたいと思います。
以下の記事でも詳しく説明されていてSeabornのグラフの表示までを行っていますが、ここではミニマムの設定で利用してみたいと思います。
SPSS Modelerの拡張ノードでPythonを利用する ①セットアップと可視化 - Qiita
■テスト環境
SPSS Modeler 18.4
Windows 11
SPSS Modeler Server 18.4
Windows Server 2019
Python 3.8.10
■サンプルストリーム
1.拡張ノードの実行
まず、最小限の実行確認をしてみます。
「拡張の出力」ノードを接続し、スクリプトの種類を「Python for Spark」に変更し、「Python シンタックス」の欄に以下のスクリプトを記述して実行します。
import sys
print(sys.version)
以下のような結果が返ります。Python 3.8.6が動作したことが確認できます。
2.Pythonの導入
1ではModelerにデフォルトで付属しているpythonをつかって実行しました。
しかしながら、追加でパッケージなどを導入することなどを考えると、Pythonは別に入れたものをつかうことをお勧めします。
この記事ではSPSS Modeler 18.4とPython 3.8.10の組合せで導入していきますが、ModelerがサポートするPythonのバージョンはModelerのバージョンによって異なります。System Requirementで確認して、お使いのModelerバージョンに合わせて、適切な組み合わせで導入をしてください。
Modelerのバージョン | サポートされるPythonバージョン |
---|---|
18.0.0.0 | 未サポート |
18.1.0.0 | 2.7 |
18.1.1.0 | 2.7 |
18.2 | 2.7 |
18.2.1 | 2.7 |
18.2.2 | 3.7.7 |
18.3 | 3.8.6+ |
18.4 | 3.8.6+ |
Modeler18.4ではPython3.8.6+がサポートされています。
IBM SPSS Modeler 18.4 - Detailed System Requirements
Pythonの3.8.10の導入については以下の記事を参考にしてください。以下の記事ではZeepも入れていますが、拡張ノードを使う目的としてはZeepの導入は不要です。
Python 3.8 +Zeepの導入 on Windows Server - Qiita
よく使うパッケージなどを入れておくことをお勧めします。以下は一例です。
py -m pip install wheel
py -m pip install numpy
py -m pip install pandas
py -m pip install scipy
py -m pip install scikit-learn
py -m pip install matplotlib
py -m pip install seaborn
py -m pip install requests
なお、spss.pyspark.runtimeなどは導入の必要はありません。
2.options.cfgの編集
options.cfgでpythonのパスを指定します。
デフォルトで導入した場合はUsersディレクトリの下にあると思います。
C:\Users\xxxxx\AppData\Local\Programs\Python\Python38
Install for all usersで導入した場合は
C:\Program Files\Python38
にあると思います。
options.cfgで指定する場合にはディレクトリの区切り文字は、\\(半角バックスラッシュ/yenマーク)でエスケープするか、/(半角スラッシュ)で、指定します。
# Set to the full path to the python executable (including the executable name) to enable use of PySpark.
eas_pyspark_python_path, "C:/Users/xxxxx/AppData/Local/Programs/Python/Python38/python.exe"
3.Modelerでの動作確認
先ほどの拡張の出力ノードをつかってもう少し情報を出力してみます。
import sys
print(sys.version)
print(sys.base_prefix)
print(sys.path)
import numpy as np
print(np.__version__)
バージョン3.8.10で動き、パスがoptions.cfgで指定したPythonが使われていることがわかります。
また、pysparkなどのパッケージがあらかじめ読み込まれていることもわかります。
追加で導入したnumpyも読み込めていました。
3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)]
C:\Users\XXXX\AppData\Local\Programs\Python\Python38
['C:\\temp\\MODELE~1\\5F50-5F54-1988-3-cf-1\\24400\\ae\\185b82f7238-e5d95b8d6b055c7f'
'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.4\\as\\scripts'
'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.4\\as\\scripts\\com.spss.ibm.pythonscript.zip'
'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.4\\spark\\python'
'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.4\\spark\\python\\lib\\py4j-0.10.9.3-src.zip'
'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.4\\spark\\python\\lib\\pyspark.zip'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\python38.zip'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\DLLs'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\lib'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\win32'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\win32\\lib'
'C:\\Users\\XXXX\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\Pythonwin']
1.24.1
4.Modeler Serverでの利用
Modeler Serverでも拡張ノードでPythonを利用する場合、Modeler Server側のPythonが動作します。つまり、Pythonを導入し、パッケージを導入し、options.cfgを編集することを推奨します。
特にパッケージのバージョンが異なると、Modelerクライアントで動いていた拡張ノードがModeler Serverでは動かないことが起きえますので注意が必要です。
Windows ServerへのPythonの3.8.10の導入については以下の記事を参考にしてください。以下の記事ではZeepも入れていますが、拡張ノードを使う目的としてはZeepの導入は不要です。Serverでの導入についてはInstall for all usersの方がよいと思います。パッケージのバージョンをそろえやすくなるからです。「Add Python 3. to PATH」は必須ではないと思います。
Python 3.8 +Zeepの導入 on Windows Server - Qiita
なお、options.cfgを修正した後はModeler Serverの再起動が必要です。
また、Modeler Serverに接続するユーザーには、Pythonを実行する権限が必要です。
参考
SPSS ModelerのPython拡張ノード関連記事へのリンク - Qiita
様々な利用例などがあります。
ブログで学ぶSPSS_Modeler #05- LightGBMや地図表示!拡張ノードでPythonやRの機能を取り込む | IBM ソリューション ブログ
拡張ノードのイントロダクションの記事です。
Python for Spark - IBM Documentation
マニュアルです。