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