0 / 0
Go back to the English version of the documentation
笔记本中的 SPSS 预测性分析数据准备算法
Last updated: 2024年10月07日
笔记本中的 SPSS 预测性分析数据准备算法

描述性统计分析可有效计算单变量和双变量统计量,并提供针对大规模数据的自动数据准备功能。 它可以广泛用于数据概要分析、数据探索和数据准备,以便进行后续的建模分析。

其核心统计功能包括基本单变量和双变量统计摘要、单变量顺序统计量、利用原始数据创建元数据信息、用于直观呈现单个字段和字段对的统计量、数据准备功能,以及数据相关度得分和数据质量评估。 它可以有效地支持以下功能:自动数据处理、用户交互性,以及就单个字段或字段对(包含指定的目标)之间的关系获取数据洞察。

Python 示例代码:

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

描述性统计分析选择策略

如果字段对数目过大(例如,大于缺省值 1000),那么可以使用 SelectionStrategy 来限制用于计算双变量统计量的字段对数目。 此策略涉及以下 2 个步骤:

  1. 基于单变量统计量来限制字段对数目。
  2. 基于核心关联双变量统计量来限制字段对数目。

请注意,在以下情况下将始终包含字段对:

  1. 字段对由一个预测变量字段和一个目标字段组成。
  2. 强制进行预测变量或目标配对。

智能数据预处理

智能数据预处理 (SDP) 引擎是用于准备数据的分析组件。 它由以下三个独立模块组成:相关性分析、相关性和冗余分析、智能元数据 (SMD) 集成。

对于包含常规字段、列表字段和映射字段的数据,相关性分析将评估输入字段与目标的关联,并选择指定数量的字段以用于后续分析。 同时,它还会扩展列表字段和映射字段,并抽取选中的字段以将其转换为基于列的常规格式。

由于相关性分析的效率,它还用于将宽数据中的大量字段减少到传统分析可以工作的中等水平。

SmartDataPreprocessingRelevanceAnalysis 将导出以下输出:

  • 包含模型信息的 JSON 文件
  • 基于列的新数据
  • 相关数据模型

Python 示例代码:

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

稀疏数据转换器

稀疏数据转换器 (SDC) 可将常规数据字段转换为列表字段。 您只需要指定要转换为列表字段的字段,然后 SDC 根据其度量级别来合并字段。 它最多生成三种列表字段:连续列表字段、分类列表字段和映射字段。

Python 示例代码:

from spss.ml.datapreparation.sparsedataconverter import SparseDataConverter

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

分级

您可以使用此函数来派生一个或多个新的分箱字段,或者获取用于确定分箱值的分箱定义。

Python 示例代码:

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)

六边形分箱

可使用此函数来计算六边形分箱并将其分配给两个字段。

Python 示例代码:

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)

复杂采样

complexSampling 函数可从数据源中选择记录的伪随机样本。

complexSampling 函数使用简单精确采样方法和简单比例采样方法对入局数据执行分层采样。 需要指定分层字段作为输入,还必须提供要采样的每一层的采样计数或采样比率。 可以选择提供每一层的记录计数,以便提高性能。

Python 示例代码:

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)

计数和样本

countAndSample 函数可生成伪随机样本,其样本大小约等于“samplingCount”输入值。

采样是通过调用采样SamplingComponent来完成的,采样率的计算公式为'samplingCount/totalRecords',其中'totalRecords'"是输入数据的记录数。

Python 示例代码:

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

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

MR 采样

mrsampling 函数可按照指定的采样比率,从数据源中选择记录的伪随机样本。 样本大小将近似等于记录总数的一个指定比例,并以一个可选的最大值为限。 记录集及其总数因随机种子而异。 数据源中每个记录被选中的概率都相同。

Python 示例代码:

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

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

采样模型

samplingModel 函数为给定步长 N 选择由每 N 条记录定义的输入记录子序列的伪随机百分比。 总样本大小可能受可选最大值限制。

当步进大小为 1 时,子序列即是整个输入记录序列。 当采样比率为 1.0 时,选择变为确定性的,而不是伪随机的。

请注意,使用分布式数据时,samplingModel 函数会单独对每个数据拆分应用选择标准。 将单独对每个数据拆分(而非整个数据源)应用最大样本大小(如果有);子序列在每个数据拆分开始处重新开始。

Python 示例代码:

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

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

顺序采样

sequentialSampling 函数类似于 samplingModel 函数。 它也针对给定的步进大小 N,选择由每 N 个记录中的第 N 个记录定义的输入记录子序列的伪随机百分比。 总样本大小可能受可选最大值限制。

当步进大小为 1 时,子序列即是整个输入记录序列。 当采样比率为 1.0 时,选择变为确定性的,而不是伪随机的。 sequentialSampling 与 samplingModel 的主要区别是,对于分布式数据,sequentialSampling 函数是对整个数据源应用选择标准,而 samplingModel 函数是单独对每个数据拆分应用选择标准。

Python 示例代码:

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

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

父主题: SPSS 预测分析算法

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more