0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CADSリアルタイムスコアリングをRESTAPIで実行する

Last updated at Posted at 2021-09-21

SPSS Collaboration And Deployment Services(以下CADS)ではSPSS Modelerで作ったストリームをREST API化してリアルタイム実行することができます。これをリアルタイム・スコアリングといいます。
今回はPythonプログラムからREST APIでのリアルタイム・スコアリングを実行してみます。

image.png

1. ストリームの確認

以下のストリームを使います。
[機械ID]と[温度]を入力すると、予測結果である[$R-不良]と[$RC-不良]を付与して戻すストリームです。

image.png

2. スコアリング構成

確認したストリームをCADSのレポジトリに登録し、右クリックで[スコアリングの構成]でスコアリング構成のウィザードを立ち上げます。

image.png

名前をつけて、後はデフォルトの設定のままで、[終了]をクリックして構成を完成させます。
image.png

これでREST APIでのアクセスが可能になります。

3. Pythonプログラムの解説

まず以下のマニュアルに従って、httpのヘッダーを作成します。
ユーザーとパスワードをbase64でエンコーディングする必要があります。以下の例ではadminを使ってしまっていますが、本来はスコアリング専用のユーザーを作って使うことをお勧めします。

Specifying request headers - IBM Documentation

ヘッダー作成
import base64
userpass_enc=str(base64.b64encode('admin:password'.encode()).decode("ascii"))

headers = {'Content-Type':'application/json;charset=utf-8',
           'Authorization': 'Basic {}'.format(userpass_enc),
          'Client-Accept-Language': 'ja-JP',
          'Accept-Language':'ja-JP'}

以下のマニュアルに従ってスコアリングリクエストのボディを作成します。

The scoreRequest object - IBM Documentation

id:スコアリング構成で指定した名前
name: スコアリング枝の入力ノード名。以下の例だと「スコアリングデータ」です
input:説明変数名と値を指定します。リストオブジェクトなので、複数行を一度に渡すこともできます。

image.png

リクエスト・ボディ作成
input={
  "id":"FailPredict",
  "requestInputTable":[
    {
      "name":"スコアリングデータ",
      "requestInputRow":[
        {"input":[
           {"name":"機械ID","value":"1036"},
           {"name":"温度","value":"911.726"}
         ]}
      ]}
  ]}

以下のマニュアルに従ってURLを指定してPOSTします。

Specifying a request URL - IBM Documentation

requestをつかってpostします。
status_codeに200が戻れば成功です。

リクエスト発行
import json
import requests
url="http://ms183-win19:9080/scoring/rest/configuration/FailPredict/score"
r_rts = requests.post(url, data=json.dumps(input),headers=headers)
print(r_rts.status_code)

post結果に対するjson()メソッドでスコア結果を得ることができます。
各エレメントは以下にマニュアルで解説されています。

The scoreResult object - IBM Documentation

columnNames:出力列名のリスト
rowValues:出力結果のリストです。出力列名のリストの順序どおりに出力されます。

レスポンス・ボディ確認
pprint.pprint(r_rts.json())

image.png

上の例だと$R-不良'='F', '$RC-不良'=0.8809523809523809が返されています。

4.サンプル

サンプルは以下に置きました。

ストリーム

https://github.com/hkwd/spsssample/raw/master/20210921CADSRTS/%E4%B8%8D%E8%89%AF%E5%88%A4%E5%AE%9A.str
notebook

データ

■テスト環境
Modeler 18.3
Python 3.8.5
Windows 10 64bit

Collaboration and Deployment Services 8.3
Windows Server 2019

5.参考

Score POST - IBM Documentation

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?