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:
- Limite o número de pares com base nas estatísticas univariadas.
- 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:
- O par é composto por um campo preditor e um campo alvo.
- 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)