Ändern Sie die Einstellungen eines Knotens in einem Superknoten mit dem Python-Skript SPSS Modeler

Supernodes und Python-Skripte

Ich verwende häufig Superknoten, um lange Streams in SPSS Modeler zu organisieren (um das Anzeigen zu vereinfachen), aber ich weiß nicht, wie ich mit Knoten in Superknoten umgehen soll, wenn ich die Knoteneinstellungen in Python-Skripten ändere. Hat. (Wenn Sie die Superknoten erweitern, wird sie gelöst, aber derzeit gibt es viele Superknoten, und ich wollte sie nach Möglichkeit mit einem Skript lösen.) Ich werde einen Weg hinterlassen, dies als Memorandum zu verwirklichen.

Zunächst das Handbuch

Zusammenfassend ist die Methode gut dokumentiert und schnell gefunden.

IBM SPSS Modeler 18.2 Python-Skript- und Automatisierungshandbuch (http://public.dhe.ibm.com/software/analytics/spss/documentation/modeler/18.2/de/ModelerScriptingAutomation.pdf)

S.383 Auszug ** Einstellungen der Eigenschaften des Kapselungsknotens ** Sie können die Eigenschaften eines bestimmten Knotens festlegen, der in einem Superknoten gekapselt ist, indem Sie auf das untergeordnete Diagramm im Superknoten zugreifen. Angenommen, Sie haben einen Eingabe-Superknoten mit einer Datei variabler Länge, die zum Lesen von Daten gekapselt ist. Sie können den Namen der gelesenen Datei (angegeben mit der Eigenschaft full_filename) übergeben, indem Sie wie folgt auf das untergeordnete Diagramm zugreifen und nach verwandten Knoten suchen:

childDiagram = source_supernode.getChildDiagram() varfilenode = childDiagram.findByType("variablefile", None) varfilenode.setPropertyValue("full_filename", "c:/mydata.txt")


## Praktische Ausgabe
 Wenn Sie es anhand des obigen Handbuchs leicht verstehen können, müssen Sie es nicht mehr lesen.

### Beispiel Stream
 (1) Es gibt einen solchen Stream, dass RFM aus Kaufverlaufsdaten aggregiert
 <img width="300" alt="WS0057.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/361272/85ea0092-1ffd-9966-6a51-efdfaab41b8e.jpeg ">
 ② Angenommen, der Inhalt des Superknotens ist wie folgt.
 <img width="900" alt="WS0058.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/361272/0cf2ef31-2c6b-8da5-9668-c8083723020c.jpeg ">

 Der Inhalt des Felderstellungsknotens "RECENCY" im Superknoten ist jetzt so.
 <img width="600" alt="WS0061.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/361272/b78affdd-74af-886d-6d15-906c24352bf3.jpeg ">


 Wir berechnen, vor wie vielen Tagen das letzte Kaufdatum auf 2020/10/1 basiert.
 (SDATE ist das Kaufdatum. Stellen Sie sich SDATE_Max als das letzte Kaufdatum für jeden Kunden im voraggregierten Knoten vor.)

 Angenommen, Sie möchten das Basisdatum 2020/10/1 entsprechend dem Ausführungszeitpunkt des Streams ändern. Sie möchten beispielsweise basierend auf dem vorherigen Sonntag aggregieren, unabhängig davon, wann Sie ihn ausführen.

 In diesem Fall können Sie den Teil datetime_date (2020, 10, 1) im Python-Skript auf das entsprechende Datum ändern, das Sie als Referenz verwenden möchten. Da die Knoten im Superknoten jedoch nicht direkt von findByXXXX (), dem vorherigen Handbuch, verarbeitet werden können Es wird einige Anstrengungen erfordern, wie in zu sehen.

 Unten finden Sie ein Beispiel für ein Python-Skript.

import datetime stream = modeler.script.stream()

#Basisdatum einstellen RefDate = datetime.date(2020, 10, 10)

#Identifizieren Sie Superknoten im Stream rfm_process_super_node = stream.findByType("process_super", u"RFM-Aggregation") #Ein Diagramm instanziieren (Stream?) In einem Superknoten erweitert rfm_child_diagram = rfm_process_super_node.getChildDiagram() #Identifizieren Sie den Felderstellungsknoten im Superknoten rfm_derive_node = rfm_child_diagram.findByType("derive", u"RECENCY") #Ändern Sie das Basisdatum für den angegebenen Felderstellungsknoten rfm_derive_node.setPropertyValue("formula_expr", u"date_days_difference(SDATE_Max,datetime_date(" + str(RefDate.year) + "," + str(RefDate.month) + "," + str(RefDate.day) + ")")


 Es ist etwas einfacher zu verstehen, wenn Sie verstehen, dass "stream" der Stream von ① und "rfm_child_diagram" der Stream im Superknoten von ② ist.

 Wenn Sie dieses Skript im Stream ausführen (Extras ⇒ Stream-Eigenschaften ⇒ Ausführen), ändert sich das Basisdatum auf 2020/10/10. Dieses Mal habe ich der Einfachheit halber das Basisdatum angegeben, aber denken Sie bitte über die Logik nach, wie Sie mit dem Basisdatum gemäß Ihren Anforderungen umgehen sollen.

 Unten finden Sie die Einstellung des Knotens, der durch Ausführen des Skripts geändert wurde. Es ging gut.
 (Ich habe es nie von Hand umgeschrieben!)

 <img width="600" alt="WS0062.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/361272/1aef661a-afdc-cf5d-f68c-8b9f7b988528.jpeg ">


 * Bitte stürzen Sie sich nicht auf etwas wie "Wenn es ein so kurzer Stream ist, warum machen Sie sich nicht die Mühe, ihn zu einem Superknoten zu machen?"



Recommended Posts

Ändern Sie die Einstellungen eines Knotens in einem Superknoten mit dem Python-Skript SPSS Modeler
Schreiben Sie den Datensatzadditionsknoten von SPSS Modeler mit Python neu.
Schreiben Sie den Sampling-Knoten von SPSS Modeler mit Python (2) neu: Layered Sampling, Cluster Sampling
Schreiben Sie den Neukonfigurationsknoten von SPSS Modeler mit Python neu. Aggregation nach gekauften Produktkategorien
Einstellungen für den Einstieg in MongoDB mit Python
Ändern Sie die IP-Einstellungen mit Python in ACL von conoha
VS-Code-Einstellungen für die Entwicklung in Python mit Abschluss
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Importieren Sie Skripte dynamisch in Python
Umgang mit Sounds in Python
Scraping mit Selen in Python
[Python] Ändere den Typ mit Pandas
Ändern Sie die Wiederholungseinstellungen mit boto3
Scraping mit Tor in Python
Kombiniert mit Ordnungszahl in Python
Versuchen Sie Juniper JUNOS PyEz (Python-Bibliothek) Memo 3 ~ Ändern Sie die Einstellungen mit PyEz ~
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
Testen mit Zufallszahlen in Python
Scraping mit Node, Ruby und Python
GOTO in Python mit erhabenem Text 3
Arbeiten mit LibreOffice in Python: Importieren
Scraping mit Selen in Python (Basic)
Numer0n mit Elementen, die mit Python erstellt wurden
Öffnen Sie UTF-8 mit Stückliste in Python
Verwenden Sie rospy mit virtualenv in Python3
Verwenden Sie benutzerdefinierte Python-Skripte mit StackStorm
Verwenden Sie Python in pyenv mit NeoVim
Verwenden Sie OpenCV mit Python 3 in Window
Bis zum Umgang mit Python in Atom
Beginnen Sie mit Python mit Blender
Arbeiten mit DICOM-Bildern in Python
Schreiben Sie den Felderstellungsknoten von SPSS Modeler mit Python neu. Merkmalsextraktion aus Zeitreihensensordaten
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Wettbewerbsprogrammierung mit Python Lokale Umgebungseinstellungen
Versuchen Sie, sich mit Python bei qiita anzumelden
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
Python3> im Schlüsselwort> Wahr mit teilweiser Übereinstimmung?
Exklusive Steuerung mit Sperrdatei in Python
Geräteüberwachung durch On-Box Python von IOS-XE
Ändern Sie die Batch-Einstellungen mit dem Befehl withlist von Mailman
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Tipps zum Umgang mit Binärdateien in Python
Zeigen Sie Python 3 im Browser mit MAMP an
So arbeiten Sie mit BigQuery in Python
Trump-Klasse in Python (mit Vergleich)
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Vorlage zum Schreiben von Batch-Skripten in Python
Umgang mit "Jahren und Monaten" in Python
Verarbeiten Sie mehrere Listen mit for in Python
Ersetzen Sie Nicht-ASCII durch reguläre Ausdrücke in Python
Einzeiler webServer (mit CGI) in Python