标注 | 说明 | 数据类型 |
输入要素 | 将为其创建聚类的要素类或要素图层。 | Feature Layer |
输出要素 | 将要创建的输出要素类,其中包含所有要素、指定的分析字段以及一个用于指明每个要素所属聚类的字段。 | Feature Class |
分析字段 | 将用于区分各个聚类的字段的列表。 | Field |
聚类方法 (可选) | 指定要使用的聚类算法。 K 均值和 K 中心点选项通常将产生类似的结果。 但是,K 中心点对于输入要素参数值中的噪点和异常值更加可靠。 K 均值通常比 K 中心点更快,建议用于大型数据集。
| String |
初始化方法 (可选) | 指定用于发展聚类的初始种子的获得方法。 例如,如果您指明需要三个聚类,则分析将从三个种子开始。
| String |
初始化字段 (可选) | 用于标识种子要素的数值型字段。 将使用此字段中具有 1 值的要素发展聚类。 每个种子将生成一个聚类,因此必须至少提供两个种子要素。 | Field |
聚类数 (可选) | 将要创建的聚类数。 如果将此参数留空时,该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量,以评估出最佳聚类数。 如果在初始化字段中提供了种子位置,该参数将被禁用。 | Long |
聚类数评估输出表 (可选) | 表中包含经计算用来评估最佳聚类数的聚类解决方案 2 至 30 的伪 F 统计量。 基于该表创建的图表可通过内容窗格独立表部分进行访问。 | Table |
插图
使用情况
-
此工具将生成一个包含分析中所使用字段以及一个名为 CLUSTER_ID 的新增整型字段的输出要素类。 默认渲染将基于 CLUSTER_ID 字段实现,并且指定每个要素所属的聚类。 例如,如果您指明需要 3 个聚类,则对于 CLUSTER_ID 字段,每个记录将包含 1、2 或 3。 输出要素类也将包含名为 IS_SEED 的二进制字段。 IS_SEED 字段可指示使用哪些要素作为发展聚类的起点。 IS_SEED 字段中非零值的数量将与为聚类数参数所输入的值相匹配。
输入要素参数值可以是点、线或面。
-
该工具会创建消息和图表,以帮助您了解所标识聚类的特征。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的查看详细信息部分来访问消息。 还可通过地理处理历史访问之前运行多元聚类工具的消息。 通过内容窗格访问图表。
-
有关输出消息和图表的详细信息,请参阅多元聚类的工作原理。
-
分析字段参数的字段必须为数值型字段,而且应包含各种值。 无任何变化的字段(即每个记录的值相同或非常相似)将从分析中删除,但将包括在输出要素中。 如果分类字段以数值型哑元变量表示(值 1 表示类别中的所有要素,而 0 表示所有其他要素),则可以与多元聚类工具结合使用。
-
多元聚类工具将会构建非空间聚类。 在某些应用中,您可以对所创建的聚类实施邻接或其他邻域分析要求。 在这种情况下,使用空间约束多元聚类工具创建空间上连续的聚类。
-
对于此工具,最佳做法是从分析字段参数的单个变量开始,并根据需要添加变量。 较少的分析字段的结果更易于解释。 当字段较少时,也更容易确定哪些变量是最佳鉴别器。
-
初始化方法参数有三个选项:优化的种子位置、用户定义的种子位置和随机种子位置。 种子是用于发展各个聚类的要素。 例如,如果为聚类数参数输入了 3,则分析将从三个种子要素开始。 默认选项优化的种子位置会随机选择第一个种子,然后确保所选择的后续种子代表了在数据空间(属性值)中相互远离的要素。 选择捕获数据空间不同区域的初始种子可以提高性能。 有时,您知道特定要素会反映您想通过不同聚类表示的独特特征。 在此情况下,通过创建一个用于标识这些独特要素的种子字段,您可以提供这些位置。 对于您创建的种子字段,除了初始种子要素之外均使用零值;初始种子要素使用值 1。 然后为初始化方法参数选择用户定义的种子位置选项。 要执行灵敏度分析以了解哪些要素始终可以在同一聚类中找到,则可以为初始化方法参数使用随机种子位置选项。 对于此选项,种子要素会被随机选择。
注:
使用随机种子时,您可以通过“随机数生成器环境”设置选择种子来启动随机数生成器。 但是,此工具使用的“随机数生成器”值始终为 Mersenne Twister。
-
初始化字段中的任何 1 值均被视为种子。 如果您指定种子位置,聚类数参数将会被禁用,且该工具会根据初始化字段参数中非零的条目数,查找相同数目的聚类。
-
如果您不知道最适合数据的聚类数参数值,则可以尝试不同的聚类数,注意哪些值能够最恰当地对聚类进行区分。 如果将聚类数参数留空,该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量,以评估出最佳聚类数,并在消息窗口中报告此最佳聚类数。 如果指定了一个可选的聚类数评估输出表参数值,则将创建一个图表,其中显示具有 2 至 30 个聚类的解决方案的伪 F 统计量值。 最大伪 F 统计量值指明在最大化聚类内相似性和聚类间差异性方面表现最佳的解决方案。 如果没有其他用于聚类数参数值的标准,可使用与其中一个最大伪 F 统计量值相关的数字。
-
该工具使用 K 均值或 K 中心点算法来将要素分成聚类。 如果为初始化方法参数选择了随机种子位置,算法将包含启发式算法,导致您每次运行工具时所返回的结果可能并不相同(即使使用了相同的数据和工具参数)。 这是因为其中包含了一个随机分量以查找用于发展聚类的初始种子要素。 由于该启发式求解法,确定最佳聚类数变得更加复杂,由于初始种子要素不同,因此在每次运行工具时,伪 F 统计量可能并不相同。 但是,当数据中存在独特模式时,从一次运行到下次运行的求解结果将会更加一致。 因此,为了帮助确定最佳聚类数,对于 2 至 30 的每个聚类数,该工具会求解 10 次,并使用 10 个伪 F 统计量值的最大值。
K 均值和 K 中心点选项通常将产生类似的结果。 但是,K 中心点对于输入要素参数值中的噪点和异常值更加可靠。 K 均值通常比 K 中心点更快,建议用于大型数据集。
-
为一组要素分配的聚类编号在这次运行与下次运行中可能并不相同。 例如,如果您根据收入变量将要素分割为两个聚类,则第一次运行分析时,您可能会看到标记为聚类 2 的高收入要素和标记为聚类 1 的低收入要素。 第二次运行相同的分析时,高收入要素可能被标记为聚类 1。某些中间收入要素在两次运行中可能会相互交换聚类成员资格。
参数
arcpy.stats.MultivariateClustering(in_features, output_features, analysis_fields, {clustering_method}, {initialization_method}, {initialization_field}, {number_of_clusters}, {output_table})
名称 | 说明 | 数据类型 |
in_features | 将为其创建聚类的要素类或要素图层。 | Feature Layer |
output_features | 将要创建的输出要素类,其中包含所有要素、指定的分析字段以及一个用于指明每个要素所属聚类的字段。 | Feature Class |
analysis_fields [analysis_field,...] | 将用于区分各个聚类的字段的列表。 | Field |
clustering_method (可选) | 指定要使用的聚类算法。 K_MEANS 和 K_MEDOIDS 选项通常将产生类似的结果。 但是,K_MEDOIDS 对于 in_features 参数值中的噪点和异常值更加可靠。 K_MEANS 通常比 K_MEDOIDS 更快,建议用于大型数据集。
| String |
initialization_method (可选) | 指定用于发展聚类的初始种子的获得方法。 例如,如果您指明需要三个聚类,则分析将从三个种子开始。
| String |
initialization_field (可选) | 用于标识种子要素的数值型字段。 将使用此字段中具有 1 值的要素发展聚类。 每个种子将生成一个聚类,因此必须至少提供两个种子要素。 | Field |
number_of_clusters (可选) | 将要创建的聚类数。 如果将此参数留空时,该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量,以评估出最佳聚类数。 如果在初始化字段中提供了种子位置,该参数将被禁用。 | Long |
output_table (可选) | 表中包含经计算用来评估最佳聚类数的聚类解决方案 2 至 30 的伪 F 统计量。 基于该表创建的图表可通过内容窗格独立表部分进行访问。 | Table |
代码示例
以下 Python 窗口脚本演示了如何使用 MultivariateClustering 函数。
import arcpy
arcpy.env.workspace = r"C:\Analysis"
arcpy.MultivariateClustering_stats("District_Vandalism", "outVandalism",
["TOTPOP", "VACANT_CY", "UNEMP"], "K_MEANS",
"OPTIMIZED_SEED_LOCATIONS", None, "5")
以下独立 Python 脚本演示了如何使用 MultivariateClustering 函数。
# Clustering Vandalism data in a metropolitan area
# using the Multivariate Clustering Tool
# Import system modules
import arcpy
# Set environment property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
try:
# Set the current workspace (to avoid having to specify the full path to
# the feature classes each time)
arcpy.env.workspace = r"C:\GA"
# Join the 911 Call Point feature class to the Block Group Polygon feature
# class
# Process: Spatial Join
fieldMappings = arcpy.FieldMappings()
fieldMappings.addTable("ReportingDistricts.shp")
fieldMappings.addTable("Vandalism2006.shp")
sj = arcpy.SpatialJoin_analysis("ReportingDistricts.shp",
"Vandalism2006.shp", "Dist_Vand.shp",
"JOIN_ONE_TO_ONE","KEEP_ALL", fieldMappings,
"COMPLETELY_CONTAINS")
# Use the Multivariate Clustering tool to create groups based on different
# variables or analysis fields
# Process: Cluster Similar Features
ga = arcpy.MultivariateClustering_stats("District_Vandalism", "outVandalism",
["Join_Count", "TOTPOP", "VACANT_CY", "UNEMP"],
"K_MEANS", "OPTIMIZED_SEED_LOCATIONS",
None, 5)
# Use Summary Statistic tool to get the Mean of variables used to group
# Process: Summary Statistics
SumStat = arcpy.Statistics_analysis("outVandalism", "outSS",
[["Join_Count", "MEAN"],
["VACANT_CY", "MEAN"],
["TOTPOP_CY", "MEAN"],
["UNEMP_CY", "MEAN"]],
"GSF_CLUSTER")
except arcpy.ExecuteError:
# If an error occurred when running the tool, print out the error message.
print(arcpy.GetMessages())