Beim Umgang mit Daten aus einer großen Anzahl von Datensätzen benötigt der Analyseprozess Zeit. In solchen Fällen ist es üblich, aus allen Fällen eine Teilmenge (Stichprobe) zu erstellen, eine verarbeitbare Größe festzulegen und diese dann zu analysieren. Selbst wenn die endgültige Analyse in allen Fällen durchgeführt wird, ist es häufig der Fall, dass die Verarbeitung mit einer kleinen Teilmenge erleichtert wird und die vorläufige Analyse durchgeführt wird. Das Erstellen einer kleinen Stichprobe aus allen Daten auf diese Weise wird als Stichproben (Stichproben) bezeichnet.
Es ist der Abtastknoten, der diese Abtastung in SPSS Modeler durchführt. Ich werde diesen Sampling-Knoten erklären und ihn mit Python-Pandas neu schreiben.
Es gibt zwei Arten von Stichproben: (1) einfache Stichproben und (2) komplexe Stichproben, die Datentrends widerspiegeln. Ich werde jeden von ihnen in zwei Artikeln erklären.
Führen Sie die folgenden POS-Daten mit ID durch. Wir verwenden ID-angehängte POS-Daten, die aufzeichnen, wer (CUSTID) wann (SDATE) und was (PRODUCTID, L_CLASS-Produkthauptklassifizierung, M_CLASS-Produktmittelklassifizierung) und wie viel (SUBTOTAL) gekauft hat.
Es gibt 28.599 Fälle in 6 Feldern.
Extrahieren Sie von Anfang an 100 Elemente. Dies ist ein sehr leichter Prozess. Dies ist auch nützlich, wenn Sie eine Vorschau von Daten anzeigen, von denen bekannt ist, dass sie groß sind. Dies ist der Standardmodus für die Modeler-Abtastung.
■ Bild nach der Verarbeitung Unabhängig von der Reihenfolge werden 100 Fälle extrahiert.
Verwenden Sie einen Stichprobenknoten.
Die Beispielmethode ist "einfach" und die Beispielmethode ist "erste n Fälle" und es werden 100 Fälle angegeben.
Übrigens ist SQL-Pushback für die "ersten n Fälle" des Abtastknotens wirksam. Das folgende Beispiel zeigt das Anwenden von SQL-Pushback auf Db2. FETCH FIRST 100 ROWS ONLY wird verwendet.
SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM (SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM SAMPLETRANDEPT4EN2019S T0 FETCH FIRST 100 ROWS ONLY) T0
Bei der Dateieingabe wird jedes Mal das gleiche Ergebnis zurückgegeben, wenn die "ersten n Elemente" wiederholt ausgeführt werden. RDB garantiert jedoch nicht die Bestellung, sodass möglicherweise nicht immer das gleiche Ergebnis zurückgegeben wird. Wenn Sie das gleiche Ergebnis garantieren möchten, fügen Sie einen Sortierknoten usw. ein, um die Reihenfolge festzulegen, und verwenden Sie dann den Stichprobenknoten.
Verwenden Sie die Kopffunktion, um die ersten N Gegenstände in Pandas zu erhalten.
df.head(100)
Extrahiere zufällig n% aus allen Fällen. Das Abtasten der ersten N Datensätze ist eine leichte Methode, es sei denn, die Originaldaten neigen dazu, durch die Reihenfolge verzerrt zu werden. Im Allgemeinen werden Daten jedoch häufig in der Reihenfolge ihres Auftretens aufgezeichnet, und die Tendenz der Daten unterscheidet sich häufig in Abhängigkeit von der Reihenfolge des Auftretens. Beispielsweise ist es bei Daten eines Tages möglich, dass die Tendenz der Daten zwischen Morgen und Nacht unterschiedlich ist. Die Zufallsstichprobe (einfache Zufallsstichprobenmethode) ist die häufigste Stichprobenmethode, mit der diese Probleme gelöst werden können.
Beachten Sie, dass dieser Prozess ein Bild von Würfeln für alle Datensätze ist. Wenn also die Datenmenge groß ist, ist dies ein schwerer Prozess.
Immerhin wird es im Abtastknoten gemacht.
Die Stichprobenmethode ist "Einfach" und die Stichprobenmethode ist "Zufällig%", was 0,2% entspricht.
Außerdem wird die zufällige Starteinstellung überprüft. Wenn Sie dies überprüfen, wird das gleiche Ergebnis zurückgegeben, wenn die Abtastung wiederholt ausgeführt wird. Wenn sich die Daten ändern, wird die Analyse instabil. Überprüfen Sie sie daher normal. Wenn Sie das Stichprobenergebnis ändern möchten, klicken Sie auf die Schaltfläche Startwert generieren und ändern Sie den Startwert, um das nächste Stichprobenergebnis zu ändern.
■ Bild nach der Verarbeitung Wir haben zufällig 0,2% ausgewählt. Aus 28.599 Fällen wurden 68 Fälle extrahiert. Im Gegensatz zu den ersten N Fällen werden die Daten der ersten 100001 Kunden nicht ausgewählt, und die Transaktionen jedes Kunden werden ebenfalls nur spärlich ausgewählt.
Übrigens ist SQL-Pushback für "zufällige%" des Stichprobenknotens wirksam. Das folgende Beispiel zeigt das Anwenden von SQL-Pushback auf Db2. BERNOULLI (0.200000) REPEATABLE (377028) wird verwendet. Unterschiedliche RDBs können unterschiedliche Methoden verwenden. Insbesondere habe ich das Gefühl, dass einige RDBs kein Saatgut unterstützen (die Probenahmeergebnisse sind nicht reproduzierbar).
SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM (SELECT T0.CUSTID AS CUSTID,T0.SDATE AS SDATE,T0.PRODUCTID AS PRODUCTID,T0."L_CLASS" AS "L_CLASS",T0."M_CLASS" AS "M_CLASS",T0.SUBTOTAL AS SUBTOTAL FROM SAMPLETRANDEPT4EN2019S T0 TABLESAMPLE BERNOULLI(0.200000) REPEATABLE(377028)) T0
Wie bereits erwähnt, kann die Zufallsauswahl ein schwerer Prozess sein, um alle Fälle zu verarbeiten. Daher ist es besser, die Stichprobenergebnisse zwischenzuspeichern oder in eine Datei oder Tabelle auszugeben, um eine effizientere nachfolgende Analyse zu ermöglichen. Ich werde.
Möglicherweise möchten Sie auch die Anzahl der Fälle festlegen und Stichproben auswählen. Berechnen Sie in diesem Fall das Verhältnis nach (Anzahl der Proben) / (Gesamtzahl) * 100 Minuten und stellen Sie es ein. Wenn Sie 100 Elemente mit diesen Daten zufällig auswählen möchten, beträgt diese 100/28599 * 100 = 0,349%.
Wenn Sie den zufälligen Prozentsatz auf 0,35 setzen und die maximale Anzahl auf 100 angeben, ist die Anzahl auf 100 begrenzt.
■ Bild nach der Verarbeitung Es wurden 100 zufällige Stichproben gemacht.
Verwenden Sie die Stichprobenfunktion, um Stichproben mit Pandas zu erhalten. Stellen Sie das Verhältnis mit frac ein. Es ist ein Bruchteil, keine 100% -Rate (1 ist 100%). Hier werden 0,2% angegeben. Geben Sie mit random_state einen zufälligen Startwert an.
df.sample(frac=0.002, random_state = 1)
Wenn Sie den Index neu zuweisen möchten, führen Sie reset_index aus (drop = True).
df.sample(frac=0.002, random_state = 1).reset_index(drop=True)
Geben Sie bei der Angabe der Anzahl der Fälle n anstelle von frac an.
df.sample(n=100, random_state = 1)
Die Probe wird unten platziert.
Strom https://github.com/hkwd/200611Modeler2Python/raw/master/sample/sample.str notebook https://github.com/hkwd/200611Modeler2Python/blob/master/sample/sampling.ipynb Daten https://raw.githubusercontent.com/hkwd/200611Modeler2Python/master/data/sampletranDEPT4en2019S.csv
■ Testumgebung Modeler 18.2.1 Windows 10 64bit Python 3.6.9 pandas 0.24.1
Abtastknoten https://www.ibm.com/support/knowledgecenter/ja/SS3RA7_18.2.1/modeler_mainhelp_client_ddita/clementine/mainwindow_navigationstreamsoutputtab.html
Recommended Posts