SPSS algoritmos de preparação de dados para análise preditiva em notebooks

O Descriptives oferece cálculos eficientes de estatísticas univariadas e bivariadas, além de recursos de preparação automática de dados para conjuntos de dados de grande porte. Pode ser amplamente utilizado na análise de perfis de dados, na exploração de dados e na preparação de dados para análises de modelagem posteriores.

Os principais recursos estatísticos incluem resumos estatísticos univariados e bivariados essenciais, estatísticas de ordem univariadas, geração de metadados a partir de dados brutos, estatísticas para visualização de campos individuais e pares de campos, recursos de preparação de dados, além de pontuação de relevância dos dados e avaliação da qualidade dos dados. Ele pode oferecer suporte eficiente às funcionalidades necessárias para o processamento automatizado de dados, a interatividade do usuário e a obtenção de insights de dados para campos individuais ou para as relações entre pares de campos, incluindo um alvo especificado.

Python código de exemplo:

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

Estratégia de seleção de descritores

Quando o número de pares de campos é muito grande (por exemplo, superior ao padrão de 1.000), utiliza-se a função ` SelectionStrategy ` para limitar o número de pares para os quais serão calculadas as estatísticas bivariadas. A estratégia envolve duas etapas:

  1. Limite o número de pares com base nas estatísticas univariadas.
  2. Limite o número de pares com base nas estatísticas bivariadas de associação central.

Observe que o par sempre será incluído nas seguintes condições:

  1. O par é composto por um campo preditor e um campo alvo.
  2. O par de preditores ou alvos é aplicado.

Pré-processamento inteligente de dados

O mecanismo Smart Data Preprocessing (SDP) é um componente analítico para a preparação de dados. Consiste em três módulos distintos: análise de relevância, análise de relevância e redundância e integração de metadados inteligentes (SMD).

Com base nos dados que incluem campos regulares, campos de lista e campos de mapa, a análise de relevância avalia as associações entre os campos de entrada e os alvos e seleciona um número especificado de campos para análise posterior. Ao mesmo tempo, expande os campos da lista e do mapa e extrai os campos selecionados para um formato padrão baseado em colunas.

Devido à eficiência da análise de relevância, ela também é utilizada para reduzir o grande número de campos presentes em conjuntos de dados extensos a um nível moderado, no qual as análises tradicionais possam ser aplicadas.

SmartDataPreprocessingRelevanceAnalysis exporta estes resultados:

  • Arquivo JSON, contendo informações do modelo
  • novos dados organizados em colunas
  • o modelo de dados correspondente

Python código de exemplo:

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

Conversor de dados esparsos

O Conversor de Dados Espalhados (SDC) converte campos de dados comuns em campos de lista. Basta especificar os campos que você deseja converter em campos de lista; em seguida, o SDC irá mesclar os campos de acordo com seu nível de medida. Isso irá gerar, no máximo, três tipos de campos de lista: campo de lista contínua, campo de lista categórica e campo de mapa.

Python código de exemplo:

from spss.ml.datapreparation.sparsedataconverter import SparseDataConverter

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

Discretização

É possível usar essa função para derivar um ou mais novos campos categorizados ou para obter as definições de categorias usadas para determinar os valores de categorias...

Python código de exemplo:

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)

Agrupamento hexadecimal

Você pode usar esta função para calcular e atribuir intervalos hexagonais a dois campos.

Python código de exemplo:

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)

Amostragem complexa

A função ` complexSampling ` seleciona uma amostra pseudoaleatória de registros de uma fonte de dados.

A função ` complexSampling ` realiza uma amostragem estratificada dos dados recebidos utilizando amostragem exata simples e amostragem proporcional simples. Os campos de estratificação são especificados na entrada, e também é necessário fornecer o número de amostras ou a proporção de amostragem para cada uma das estratas a serem amostradas. Opcionalmente, é possível fornecer o número de registros de cada estrato para melhorar o desempenho.

Python código de exemplo:

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 e amostrar

A função ` countAndSample ` gera uma amostra pseudoaleatória cujo tamanho é aproximadamente igual ao valor de entrada de ` 'samplingCount' `.

A amostragem é realizada chamando o SamplingComponent com uma taxa de amostragem que é calculada como 'samplingCount / totalRecords', em que 'totalRecords' é a contagem de registros dos dados recebidos.

Python código de exemplo:

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

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

Amostragem por RM

A função mrsampling seleciona uma amostra pseudoaleatória de registros de uma fonte de dados com uma taxa de amostragem especificada. O tamanho da amostra corresponderá aproximadamente à proporção especificada do número total de registros, sujeita a um limite máximo opcional. O conjunto de registros e seu número total variam de acordo com a semente aleatória. Cada registro na fonte de dados tem a mesma probabilidade de ser selecionado.

Python código de exemplo:

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

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

Modelo de amostragem

A função ` samplingModel ` seleciona uma porcentagem pseudoaleatória da subseqüência de registros de entrada definida pelo N-ésimo registro, para um determinado tamanho de passo N. O tamanho total da amostra pode, opcionalmente, ser limitado a um valor máximo.

Quando o tamanho do intervalo é 1, a subseqüência corresponde à sequência completa de registros de entrada. Quando a proporção de amostragem é de 1.0, a seleção passa a ser determinística, e não pseudoaleatória.

Observe que, no caso de dados distribuídos, a função ` samplingModel ` aplica os critérios de seleção de forma independente a cada divisão dos dados. O tamanho máximo da amostra, se houver, aplica-se independentemente a cada divisão e não à fonte de dados como um todo; a subseqüência é reiniciada no início de cada divisão.

Python código de exemplo:

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

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

Amostragem sequencial

A função ` sequentialSampling ` é semelhante à função ` samplingModel `. Além disso, seleciona uma porcentagem pseudoaleatória da subseqüência de registros de entrada definida pelo N-ésimo registro para um determinado tamanho de passo N. O tamanho total da amostra pode, opcionalmente, ser limitado a um valor máximo.

Quando o tamanho do intervalo é 1, a subseqüência corresponde à sequência completa de registros de entrada. Quando a proporção de amostragem é de 1.0, a seleção passa a ser determinística, e não pseudoaleatória. A principal diferença entre sequentialSampling e samplingModel é que, no caso de dados distribuídos, a função sequentialSampling aplica os critérios de seleção a toda a fonte de dados, enquanto a função samplingModel aplica os critérios de seleção independentemente a cada divisão dos dados.

Python código de exemplo:

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

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