SPSS Modeler로 다양한 조합의 산점도를 자동 출력

보이는



※ 가상의 사건입니다.

데이터 과학은 비교적 진흙 냄새.

통계의 힘으로 스마트하게 과제 해결하는 것이 데이터 과학자.
요즘은 SPSS Modeler 뭐 정말 스마트한 소프트웨어도 있어, 일일이 R의 코드와 망설이지 않아도 초스마트에 여러 가지 통계 분석을 해 주거나 하는 것입니다만, 문제인 것은 그러한 통계가 끝난 후, 어떤 분석을 갔는지 전문외인에게 설명할 때입니다.

「그렇기 때문에 설명을 위해서 n(>100)대로의 산포도의 화상을 만들어 주었으면 한다」
『사랑과 명토는 그리 멀다』
"만든 이미지는 1페이지씩 PowerPoint에 붙여 넣는다"
『나를 명토의 부모와』

개요



환경: SPSS Modeler Subscription 1.0 (Windows x64)

설명을 위해 Wine Quality Datasets 1 을 이용합니다.

미리, 이러한 노드가 만들고 있다고 가정.



「데이터형」의 내용은 이런 느낌.



「quality」를 산포도에 플롯하는 점의 크기에, 「fixed acidity」또는 「volatile acidity」를 산포도의 x축의 값에, 「free sulfur dioxide」또는 「total sulfur dioxide」를 산포도의 y 축 값에 대한 산점도를 만듭니다.






그 전에



모든 조합의 산점도를 만들고 싶다면, "그래프 보드"노드를 만들어 "산포도 행렬 (SPLOM)"을 선택하여 실행하면 만들 수 있습니다.



다만 이번에는 나중에 파워 포인트에서 붙이기 위해 하나씩 별도의 산포도를 출력하고 싶다는 사정이있었습니다.

기법



여러가지로 되는 산포도를 하나하나 수작업으로 만드는 것은 무리입니다. (이번 예에서는 4가지 뿐입니다만)
SPSS Modeler에서는 Python으로 작업 자동화 스크립트를 작성할 수 있기 때문에 그것을 이용합니다.

우선은 「데이터형」노드와 「산포도」노드의 ID를 조사해…



[파일]->[스트림 속성(I)]->[실행]에 다음과 유사한 코드를 씁니다.
diagram = modeler.script.diagram()

# 散布図画像の出力ディレクトリ(最後の/まで入力)
directory = "<出力ディレクトリのフルパス>"

# 画像の出力サイズ
width = 1024
height = 768

# ノードを取得
typenode = diagram.findByID("<データ型ノードのID>")    # データ型ノード
plotnode = diagram.findByID("<散布図ノードのID>")    # 散布図ノード

# データ型ノードのフィールドを全て取得
fields = typenode.getKeyedPropertyKeys("values")

# 散布図に使うフィールドを定義
x_fields = filter(lambda f: u"acidity" in f, fields) # 「acidity」が含まれるフィールドがX軸
y_fields = filter(lambda f: u"dioxide" in f, fields) # 「dioxide」が含まれるフィールドがY軸
size_fields = [u"quality"]   # 「quality」がプロットする点のサイズ

# 散布図の出力先をPNGファイルに設定
plotnode.setPropertyValue("output_mode", "File")
plotnode.setPropertyValue("output_format", "PNG")

# 画像の出力サイズを設定
plotnode.setPropertyValue("use_graph_size", True)
plotnode.setPropertyValue("graph_width", width)
plotnode.setPropertyValue("graph_height", height)

for x_field in x_fields:
    for y_field in y_fields:
        for size_field in size_fields:
            # 散布図の軸を設定
            plotnode.setPropertyValue("x_field", x_field)
            plotnode.setPropertyValue("y_field", y_field)
            plotnode.setPropertyValue("size_field", size_field)

            # 散布図画像の出力先を設定
            full_filename = directory + x_field + "_" + y_field + "_" + size_field + ".png"
            plotnode.setPropertyValue("full_filename", full_filename)

            # 散布図を出力
            plotnode.run(None)


그리고는 「적용」버튼을 누른 후 「이 스크립트를 실행」버튼을 누르면 OK.



출력 디렉토리에 지정한 위치에 이미지 파일이 자동으로 출력됩니다.



후기



이 후 출력된 이미지를 1장씩 PowerPoint에 붙여 넣으려면 지정된 폴더의 이미지 파일을 일괄 삽입하는 PowerPoint 매크로을 이용했습니다.

유출 이야기



그런 복잡한 이야기도 아니라고 생각합니다만, 그래서인지 SPSS Modeler의 자동화에 관한 정보가 거의 존재하지 않았기 때문에 기사로 해 보았습니다.

그건 그렇고, 대학원 1 학년입니다. 가능한 한 즐겁게 일하는 것만 생각하고 있는 불량입니다만 좋으면 누군가 고용해 주세요.
후쿠짱@후쿠쨩. my 네 t 굳어 r. 이 m



P. Cortez, A. Cerdeira, F. Almeida, T. Matos, and J. Reis, Decision Support Systems 47, 547 (1998). 

좋은 웹페이지 즐겨찾기