SPSS algoritmos de preparación de datos para el análisis predictivo en cuadernos

Descriptives ofrece un cálculo eficiente de estadísticas univariantes y bivariantes, así como funciones de preparación automática de datos a gran escala. Se puede utilizar ampliamente en la elaboración de perfiles de datos, la exploración de datos y la preparación de datos para posteriores análisis de modelización.

Las funciones estadísticas principales incluyen resúmenes estadísticos univariantes y bivariantes esenciales, estadísticas de orden univariantes, generación de metadatos a partir de datos brutos, estadísticas para la visualización de campos individuales y pares de campos, funciones de preparación de datos, así como la puntuación de relevancia de los datos y la evaluación de la calidad de los datos. Puede respaldar de manera eficaz las funciones necesarias para el procesamiento automatizado de datos, la interactividad con el usuario y la obtención de información sobre datos, tanto de campos individuales como de las relaciones entre pares de campos, incluyendo un objetivo específico.

Python código de ejemplo:

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()

Estrategia de selección de descriptores

Cuando el número de pares de campos es demasiado elevado (por ejemplo, superior al valor predeterminado de 1000), se utiliza la función « SelectionStrategy » para limitar el número de pares para los que se calcularán las estadísticas bivariadas. La estrategia consta de dos pasos:

  1. Limita el número de pares basándote en las estadísticas univariantes.
  2. Limita el número de pares basándote en las estadísticas bivariadas de asociación principal.

Ten en cuenta que el par siempre se incluirá en las siguientes condiciones:

  1. El par está formado por un campo predictor y un campo objetivo.
  2. Se aplica el par de predictores o objetivos.

Preprocesamiento inteligente de datos

El motor Smart Data Preprocessing (SDP) es un componente analítico destinado a la preparación de datos. Consta de tres módulos independientes: análisis de relevancia, análisis de relevancia y redundancia, e integración de metadatos inteligentes (SMD).

A partir de los datos que contienen campos normales, campos de lista y campos de mapa, el análisis de relevancia evalúa las asociaciones entre los campos de entrada y los de destino, y selecciona un número determinado de campos para su posterior análisis. Al mismo tiempo, despliega los campos de la lista y del mapa, y extrae los campos seleccionados en un formato estándar basado en columnas.

Debido a la eficacia del análisis de relevancia, también se utiliza para reducir el gran número de campos presentes en conjuntos de datos de gran volumen a un nivel moderado en el que puedan funcionar los métodos analíticos tradicionales.

SmartDataPreprocessingRelevanceAnalysis exporta estos resultados:

  • Archivo JSON que contiene información sobre el modelo
  • nuevos datos basados en columnas
  • el modelo de datos correspondiente

Python código de ejemplo:

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()

Convertidor de datos dispersos

El convertidor de datos dispersos (SDC) convierte los campos de datos normales en campos de lista. Solo tienes que indicar los campos que deseas convertir en campos de lista; a continuación, SDC fusionará los campos según su nivel de medición. Generará, como máximo, tres tipos de campos de lista: campo de lista continua, campo de lista categórica y campo de mapa.

Python código de ejemplo:

from spss.ml.datapreparation.sparsedataconverter import SparseDataConverter

sdc = SparseDataConverter(). \
    setInputFieldList(["Age", "Sex", "Marriage", "BP", "Cholesterol", "Na", "K", "Drug"])
predictions = sdc.transform(data)
predictions.show()

En intervalo

Puede utilizar esta función para derivar uno o más campos agrupados nuevos o para obtener las definiciones de intervalo utilizadas para determinar los valores de intervalo.

Python código de ejemplo:

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)

Agrupación hexagonal

Puede utilizar esta función para calcular y asignar celdas hexagonales a dos campos.

Python código de ejemplo:

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)

Muestreo complejo

La función ` complexSampling ` selecciona una muestra pseudoaleatoria de registros de una fuente de datos.

La función ` complexSampling ` realiza un muestreo estratificado de los datos entrantes utilizando muestreo exacto simple y muestreo proporcional simple. Los campos de estratificación se especifican en los datos de entrada y también deben indicarse los recuentos de muestreo o la proporción de muestreo para cada uno de los estratos que se van a muestrear. Si se desea, se pueden proporcionar los recuentos de registros de cada estrato para mejorar el rendimiento.

Python código de ejemplo:

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)

Contar y muestrear

La función ` countAndSample ` genera una muestra pseudoaleatoria cuyo tamaño es aproximadamente igual al valor introducido en ` 'samplingCount' `.

El muestreo se realiza llamando al SamplingComponent con un ratio de muestreo que se calcula como 'samplingCount / totalRecords' donde 'totalRecords' ' es el recuento de registros de los datos entrantes.

Python código de ejemplo:

from spss.ml.datapreparation.sampling.countandsample import CountAndSample

transformer = CountAndSample().setSamplingCount(20000).setRandomSeed(123)
sampled = transformer.transform(unionDF)

Muestreo de RM

La función mrsampling selecciona una muestra pseudoaleatoria de registros de una fuente de datos con una proporción de muestreo especificada. El tamaño de la muestra será aproximadamente la proporción especificada del número total de registros, con un límite máximo opcional. El conjunto de registros y su número total variarán en función de la semilla aleatoria. Cada registro de la fuente de datos tiene la misma probabilidad de ser seleccionado.

Python código de ejemplo:

from spss.ml.datapreparation.sampling.mrsampling import MRSampling

transformer = MRSampling().setSamplingRatio(0.5).setRandomSeed(123).setDiscard(True)
sampled  = transformer.transform(unionDF)

Modelo de muestreo

La función ` samplingModel ` selecciona un porcentaje pseudoaleatorio de la subsecuencia de registros de entrada definida por cada N-ésimo registro, para un tamaño de paso N dado. El tamaño total de la muestra puede limitarse opcionalmente a un máximo.

Cuando el tamaño del paso es 1, la subsecuencia es la secuencia completa de registros de entrada. Cuando la proporción de muestreo es de 1.0, la selección deja de ser pseudoaleatoria y pasa a ser determinista.

Ten en cuenta que, en el caso de datos distribuidos, la función « samplingModel » aplica los criterios de selección de forma independiente a cada parte de los datos. El tamaño máximo de la muestra, si lo hay, se aplica de forma independiente a cada división y no a toda la fuente de datos; la subsecuencia se reinicia al comienzo de cada división.

Python código de ejemplo:

from spss.ml.datapreparation.sampling.samplingcomponent import SamplingModel

transformer = SamplingModel().setSamplingRatio(1.0).setSamplingStep(2).setRandomSeed(123).setDiscard(False)
sampled = transformer.transform(unionDF)

Muestreo secuencial

La función ` sequentialSampling ` es similar a la función ` samplingModel `. Además, selecciona un porcentaje pseudoaleatorio de la subsecuencia de registros de entrada definida por cada N-ésimo registro para un tamaño de paso N dado. El tamaño total de la muestra puede limitarse opcionalmente a un máximo.

Cuando el tamaño del paso es 1, la subsecuencia es la secuencia completa de registros de entrada. Cuando la proporción de muestreo es de 1.0, la selección deja de ser pseudoaleatoria y pasa a ser determinista. La principal diferencia entre sequentialSampling y samplingModel es que, en el caso de los datos distribuidos, la función sequentialSampling aplica los criterios de selección a toda la fuente de datos, mientras que la función samplingModel aplica los criterios de selección de forma independiente a cada parte de los datos.

Python código de ejemplo:

from spss.ml.datapreparation.sampling.samplingcomponent import SequentialSampling

transformer = SequentialSampling().setSamplingRatio(1.0).setSamplingStep(2).setRandomSeed(123).setDiscard(False)
sampled = transformer.transform(unionDF)