描述
使用主成分分析 (PCA) 或降级线性判别分析 (LDA) 将尽可能多的方差聚合成更少的分量,来降低连续变量集的维数。变量指定为输入表或要素图层中的字段,表示新变量的新字段保存在输出表或要素类中。新字段数将小于原始变量数,同时保持所有原始变量中的方差数量尽可能多。
降维通常用于探索变量之间的多元关系,以及降低机器学习算法的计算成本,其中所需的内存和处理时间取决于数据的维数。在分析或机器学习算法中使用分量替代原始数据,通常可以提供可比较的(或更好的)结果,同时减少消耗的计算资源。
插图
使用方法
必须在分析字段参数中至少提供两个数值字段,因为数据必须至少具有两个维度才能进行降维。
降维方法参数存在以下两个选项:
- 主成分分析 (PCA) - 此方法按顺序构建分量,每个分量用于在原始变量之间捕获尽可能多的总方差和相关性。调整数据比例参数可用于统一所有原始变量的比例,以使每个变量在主成分中具有同等的重要性。如果数据未调整比例,则值较大的变量在总方差中的占比最大,并且在前几个分量中过度表示。如果打算执行使用分量来预测连续变量值的分析或机器学习方法,建议使用此方法。
- 降级线性判别分析 (LDA) - 此方法构建的分量可最大程度地提高分析变量与在分类字段参数中提供的不同级别分类变量的可分离性。这些分量将保持尽可能多的类别间方差,以使生成的分量在将每个记录分类为某个类别时最有效。此方法可自动调整数据比例,如果打算执行使用分量对分类变量进行分类的分析或机器学习方法,建议使用此方法。
地理处理消息将显示每个分量保持的方差百分比和累积百分比。
要创建的分量数取决于是否指定要保持的最小方差百分比和最小分量数参数的值。
- 如果指定了一个参数而未指定另一个参数,则由指定参数的值确定分量数。分量数将等于满足指定最小值所需的最小数。
- 如果指定了两个参数,则使用生成的两个分量数中的较大者。
- 如果这两个参数均未指定,则使用几种统计方法确定分量数,并且该工具将使用每种方法建议的最大分量数。这两种降维方法都包含 Broken-Stick 方法和 Bartlett 球形度检验。对于 PCA,如果置换检验次数参数值大于零,还会执行置换检验。
有关每个检验结果的信息将显示为地理处理消息。
如果表是由输出特征值表参数创建的,将在输出表中创建一个“碎石图”图表,用于可视化每个分量保持的方差。
如果表是由输出特征向量表参数创建的,将在输出表中创建一个条形图,用于可视化每个特征向量。
有关 PCA 和降级 LDA 的其他信息,请参阅以下参考文献:
- James, G., Witten, D., Hastie, T., Tibshirani, R. (2014). "An Introduction to Statistical Learning: with Applications in R." Springer Publishing Company, Incorporated. https://doi.org/10.1007/978-1-4614-7138-7
有关用于确定分量数的方法的其他信息,请参阅以下参考文献:
- Peres-Neto, P., Jackson, D., Somers, K. (2005). "How many principal components? Stopping rules for determining the number of non-trivial axes revisited." Computational Statistics & Data Analysis. 49.4: 974-997. https://doi.org/10.1016/j.csda.2004.06.015.
语法
arcpy.stats.DimensionReduction(in_table, output_data, fields, {method}, {scale}, {categorical_field}, {min_variance}, {min_components}, {append_fields}, {output_eigenvalues_table}, {output_eigenvectors_table}, {number_of_permutations})
参数 | 说明 | 数据类型 |
in_table | 包含要降维的字段的表或要素。 | Table View |
output_data | 包含降维的生成分量的输出表或要素类。 | Table |
fields [fields,...] | 表示要降维的数据的字段。 | Field |
method (可选) | 指定用于对分析字段进行降维的方法。
| String |
scale (可选) | 指定是否将调整每个分析的值比例,以使方差等于 1。这种比例调整可确保每个分析字段在分量中的优先级相同。比例调整还消除了线性单位的影响,例如,以米和英尺测量的相同数据将生成等效分量。将转换分析字段的值,以使这两个选项的平均值为零。
| Boolean |
categorical_field (可选) | 表示 LDA 的分类变量的字段。这些分量将保留将每个输入记录分类为这些类别所需的最大信息量。 | Field |
min_variance (可选) | 必须在分量中保持的分析字段总方差的最小百分比。总方差取决于是否使用调整数据比例参数调整分析字段的比例。 | Long |
min_components (可选) | 最小分量数。 | Long |
append_fields (可选) | 指定是否复制输入表或要素中的所有字段并将其追加到输出表或要素中。fields 参数中提供的字段将复制到输出中,无论此参数的值为何。
| Boolean |
output_eigenvalues_table (可选) | 包含每个分量的特征值的输出表。 | Table |
output_eigenvectors_table (可选) | 包含每个分量的特征向量的输出表。 | Table |
number_of_permutations (可选) | 指定确定最佳分量数时要使用的置换检验次数。默认值为 0,表示不会执行置换检验。提供的值必须等于 0、99、199、499 或 999。如果提供了任何其他值,将使用 0,并且不会执行置换检验。 | Long |
代码示例
以下 Python 脚本演示了如何使用 DimensionReduction 工具。
arcpy.stats.DimensionReduction("DemographicData",
"DemographicData_DimensionReduction",
"age_group_1;age_group2;age_group_3;age_group_4;age_group_5",
"PCA", "NO_SCALE_DATA", None, None, 3,
"NO_APPEND", "EigenValueTable", None, 99)
以下独立 Python 脚本演示了如何使用 DimensionReduction 工具预测人口:
# Import system modules
import arcpy
# Overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
arcpy.env.workspace = r"c:\projects\dimensionreduction.gdb"
# Reduce the fields of population by age group using Reduced-Rank LDA method;
# use "State" as the categorical field; choose the eigenvector output.
arcpy.stats.DimensionReduction("DemographicData",
"DemographicData_DimensionReduction",
"age_group_1;age_group2;age_group_3;age_group_4;age_group_5",
"LDA", "SCALE_DATA", "State", None, None,
"APPEND", None, "EigenVectorTable", 0)
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是