SPSS Algorithmen zur Datenaufbereitung für Predictive Analytics in Notebooks
Descriptives bietet eine effiziente Berechnung ein- und zweidimensionaler statistischer Kennzahlen sowie Funktionen zur automatischen Datenaufbereitung für große Datenmengen. Es findet breite Anwendung bei der Datenprofilierung, der Datenexploration und der Datenaufbereitung für nachfolgende Modellierungsanalysen.
Zu den zentralen statistischen Funktionen gehören grundlegende univariate und bivariate statistische Zusammenfassungen, univariate Ordnungsstatistiken, die Erstellung von Metadaten aus Rohdaten, Statistiken zur Visualisierung einzelner Felder und Feldpaare, Funktionen zur Datenaufbereitung sowie die Bewertung der Datenrelevanz und der Datenqualität. Es kann die Funktionen, die für die automatisierte Datenverarbeitung, die Benutzerinteraktion und die Gewinnung von Erkenntnissen aus Daten für einzelne Felder oder die Beziehungen zwischen Feldpaaren einschließlich eines bestimmten Ziels erforderlich sind, effizient unterstützen.
Python Beispielcode:
from spss.ml.datapreparation.descriptives import Descriptives
de = Descriptives(). \
setInputFieldsList(["Field1", "Field2"]). \
setTargetFieldList(["Field3"]). \
setTrimBlanks("TRIM_BOTH")
deModel = de.fit(df)
PMML = deModel.toPMML()
statXML = deModel.statXML()
predictions = deModel.transform(df)
predictions.show()
Strategie zur Auswahl von Deskriptoren
Wenn die Anzahl der Feldpaare zu groß ist (beispielsweise größer als der Standardwert von 1000), wird die Option „ SelectionStrategy “ verwendet, um die Anzahl der Paare zu begrenzen, für die bivariate Statistiken berechnet werden. Die Strategie umfasst zwei Schritte:
- Begrenzen Sie die Anzahl der Paare auf der Grundlage der univariaten Statistik.
- Begrenzen Sie die Anzahl der Paare auf der Grundlage der bivariaten Statistiken der Kernassoziation.
Beachten Sie, dass das Paar unter den folgenden Bedingungen immer enthalten ist:
- Das Paar besteht aus einem Prädiktorfeld und einem Zielfeld.
- Das Paar aus Prädiktoren und Zielen wird durchgesetzt.
Intelligente Datenvorverarbeitung
Die Smart Data Preprocessing (SDP)-Engine ist eine Analysekomponente zur Datenaufbereitung. Sie besteht aus drei separaten Modulen: Relevanzanalyse, Relevanzanalyse und Redundanzanalyse sowie Integration intelligenter Metadaten (SMD).
Anhand der Daten mit regulären Feldern, Listenfeldern und Kartenfeldern wertet die Relevanzanalyse die Zusammenhänge zwischen Eingabefeldern und Zielfeldern aus und wählt eine festgelegte Anzahl von Feldern für die weitere Analyse aus. Gleichzeitig erweitert es Listen- und Kartenfelder und extrahiert die ausgewählten Felder in ein reguläres spaltenbasiertes Format.
Aufgrund der Effizienz der Relevanzanalyse wird diese auch eingesetzt, um die große Anzahl von Feldern in umfangreichen Datensätzen auf ein überschaubares Maß zu reduzieren, sodass herkömmliche Analysemethoden angewendet werden können.
SmartDataPreprocessingRelevanceAnalysis gibt folgende Ausgaben aus:
- JSON-Datei mit Modellinformationen
- neue spaltenbasierte Daten
- das zugehörige Datenmodell
Python Beispielcode:
from spss.ml.datapreparation.smartdatapreprocessing import SmartDataPreprocessingRelevanceAnalysis
sdpRA = SmartDataPreprocessingRelevanceAnalysis(). \
setInputFieldList(["holderage", "vehicleage", "claimamt"]). \
setTargetFieldList(["vehiclegroup", "nclaims"]). \
setMaxNumTarget(3). \
setInvalidPairsThresEnabled(True). \
setRMSSEThresEnabled(True). \
setAbsVariCoefThresEnabled(True). \
setInvalidPairsThreshold(0.7). \
setRMSSEThreshold(0.7). \
setAbsVariCoefThreshold(0.05). \
setMaxNumSelFields(2). \
setConCatRatio(0.3). \
setFilterSelFields(True)
predictions = sdpRA.transform(data)
predictions.show()
Konverter für spärliche Daten
Der Sparse Data Convertor (SDC) wandelt reguläre Datenfelder in Listenfelder um. Sie müssen lediglich die Felder angeben, die Sie in Listenfelder umwandeln möchten; SDC führt dann die Felder entsprechend ihrer Messebene zusammen. Es werden höchstens drei Arten von Listenfeldern generiert: fortlaufende Listenfelder, kategoriale Listenfelder und Kartenfelder.
Python Beispielcode:
from spss.ml.datapreparation.sparsedataconverter import SparseDataConverter
sdc = SparseDataConverter(). \
setInputFieldList(["Age", "Sex", "Marriage", "BP", "Cholesterol", "Na", "K", "Drug"])
predictions = sdc.transform(data)
predictions.show()
Klassierung
Sie können diese Funktion verwenden, um ein oder mehrere neue klassierte Felder abzuleiten oder um die Klassendefinitionen abzurufen, mit denen die Klassenwerte bestimmt werden.
Python Beispielcode:
from spss.ml.datapreparation.binning.binning import Binning
binDefinition = BinDefinitions(1, False, True, True, [CutPoint(50.0, False)])
binField = BinRequest("integer_field", "integer_bin", binDefinition, None)
params = [binField]
bining = Binning().setBinRequestsParam(params)
outputDF = bining.transform(inputDF)
Hex-Binning
Mit dieser Funktion können Sie hexagonale Zellen berechnen und zwei Feldern zuweisen.
Python Beispielcode:
from spss.ml.datapreparation.binning.hexbinning import HexBinning
from spss.ml.param.binningsettings import HexBinningSetting
params = [HexBinningSetting("field1_out", "field1", 5, -1.0, 25.0, 5.0),
HexBinningSetting("field2_out", "field2", 5, -1.0, 25.0, 5.0)]
hexBinning = HexBinning().setHexBinRequestsParam(params)
outputDF = hexBinning.transform(inputDF)
Komplexe Stichproben
Die Funktion ` complexSampling ` wählt eine pseudozufällige Stichprobe von Datensätzen aus einer Datenquelle aus.
Die Funktion ` complexSampling ` führt eine geschichtete Stichprobenziehung der eingehenden Daten durch, wobei einfache exakte Stichprobenziehung und einfache proportionale Stichprobenziehung verwendet werden. Die Stratifizierungsfelder werden als Eingabe angegeben, und es müssen außerdem die Stichprobenanzahl oder der Stichprobenanteil für jede der zu befragenden Schichten angegeben werden. Optional können die Datensatzzahlen für jede Schicht angegeben werden, um die Leistung zu verbessern.
Python Beispielcode:
from spss.ml.datapreparation.sampling.complexsampling import ComplexSampling
from spss.ml.datapreparation.params.sampling import RealStrata, Strata, Stratification
transformer = ComplexSampling(). \
setRandomSeed(123444). \
setRepeatable(True). \
setStratification(Stratification(["real_field"], [
Strata(key=[RealStrata(11.1)], samplingCount=25),
Strata(key=[RealStrata(2.4)], samplingCount=40),
Strata(key=[RealStrata(12.9)], samplingRatio=0.5)])). \
setFrequencyField("frequency_field")
sampled = transformer.transform(unionDF)
Zählen und Stichprobe
Die Funktion ` countAndSample ` erzeugt eine pseudozufällige Stichprobe, deren Größe in etwa der des Eingabewerts ` 'samplingCount' ` entspricht.
Das Sampling wird durch den Aufruf der SamplingComponent mit einem Sampling-Verhältnis erreicht, das als 'samplingCount / totalRecords' berechnet wird, wobei 'totalRecords' die Anzahl der Datensätze der eingehenden Daten ist.
Python Beispielcode:
from spss.ml.datapreparation.sampling.countandsample import CountAndSample
transformer = CountAndSample().setSamplingCount(20000).setRandomSeed(123)
sampled = transformer.transform(unionDF)
MR-Probenahme
Die Funktion `mrsampling` wählt mit einem festgelegten Stichprobenanteil eine pseudozufällige Stichprobe von Datensätzen aus einer Datenquelle aus. Die Stichprobengröße entspricht in etwa dem angegebenen Anteil der Gesamtzahl der Datensätze, wobei ein optionales Maximum gilt. Die Zusammensetzung der Datensätze und ihre Gesamtzahl variieren je nach Zufallsstartwert. Jeder Datensatz in der Datenquelle hat die gleiche Wahrscheinlichkeit, ausgewählt zu werden.
Python Beispielcode:
from spss.ml.datapreparation.sampling.mrsampling import MRSampling
transformer = MRSampling().setSamplingRatio(0.5).setRandomSeed(123).setDiscard(True)
sampled = transformer.transform(unionDF)
Stichprobenmodell
Die Funktion „ samplingModel “ wählt einen pseudozufälligen Prozentsatz der Teilfolge der Eingabedatensätze aus, die durch jeden N-ten Datensatz bei einer gegebenen Schrittweite N definiert ist. Die Gesamtstichprobengröße kann optional auf einen Höchstwert begrenzt werden.
Wenn der Schritt 1 beträgt, entspricht die Teilfolge der gesamten Folge von Eingabedatensätzen. Wenn das Stichprobenverhältnis 1.0 beträgt, erfolgt die Auswahl deterministisch und nicht pseudozufällig.
Beachten Sie, dass bei verteilten Daten die Funktion „ samplingModel “ die Auswahlkriterien unabhängig auf jeden Datensatz anwendet. Die maximale Stichprobengröße, sofern vorhanden, gilt unabhängig für jeden Teilbereich und nicht für die gesamte Datenquelle; die Teilsequenz wird zu Beginn jedes Teilbereichs neu gestartet.
Python Beispielcode:
from spss.ml.datapreparation.sampling.samplingcomponent import SamplingModel
transformer = SamplingModel().setSamplingRatio(1.0).setSamplingStep(2).setRandomSeed(123).setDiscard(False)
sampled = transformer.transform(unionDF)
Sequentielles Abtasten
Die Funktion „ sequentialSampling “ ähnelt der Funktion „ samplingModel “. Außerdem wählt es einen pseudozufälligen Prozentsatz der Teilfolge der Eingabedatensätze aus, die durch jeden N-ten Datensatz bei einer gegebenen Schrittweite N definiert ist. Die Gesamtstichprobengröße kann optional auf einen Höchstwert begrenzt werden.
Wenn der Schritt 1 beträgt, entspricht die Teilfolge der gesamten Folge von Eingabedatensätzen. Wenn das Stichprobenverhältnis 1.0 beträgt, erfolgt die Auswahl deterministisch und nicht pseudozufällig. Der Hauptunterschied zwischen „ sequentialSampling “ und „ samplingModel “ besteht darin, dass bei verteilten Daten die Funktion „ sequentialSampling “ die Auswahlkriterien auf die gesamte Datenquelle anwendet, während die Funktion „ samplingModel “ die Auswahlkriterien unabhängig voneinander auf jeden einzelnen Datensatz anwendet.
Python Beispielcode:
from spss.ml.datapreparation.sampling.samplingcomponent import SequentialSampling
transformer = SequentialSampling().setSamplingRatio(1.0).setSamplingStep(2).setRandomSeed(123).setDiscard(False)
sampled = transformer.transform(unionDF)