3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SPSS Modelerの拡張ノードでPythonを利用する(ミニマム設定)

Last updated at Posted at 2023-01-16

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.拡張ノードの実行

まず、最小限の実行確認をしてみます。

「ユーザー入力」ノードで一列一行だけのデータを作ります。
image.png

「拡張の出力」ノードを接続し、スクリプトの種類を「Python for Spark」に変更し、「Python シンタックス」の欄に以下のスクリプトを記述して実行します。

バージョン出力
import sys
print(sys.version)

image.png

以下のような結果が返ります。Python 3.8.6が動作したことが確認できます。
image.png

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

image.png

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__)

image.png

バージョン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

マニュアルです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?