多元聚类 (空间统计)

摘要

仅根据要素属性值查找要素的自然聚类。

了解有关多元聚类工具工作原理的详细信息

插图

多元聚类逻辑示意图

使用情况

  • 此工具将生成一个包含分析中所使用字段以及一个名为 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 统计量值相关的数字。用于查找最佳聚类数的伪 F 统计量图表

  • 该工具使用 K 均值或 K 中心点算法来将要素分成聚类。如果为初始化方法选择了随机种子位置,算法将包含启发式算法,导致您每次运行工具时所返回的结果可能并不相同(即使使用了相同的数据和相同的工具参数)。这是因为其中包含了一个随机分量以查找用于发展聚类的初始种子要素。由于该启发式求解法,确定最佳聚类数变得更加复杂,由于初始种子要素不同,因此在每次运行工具时,伪 F 统计量可能并不相同。但是,当数据中存在独特模式时,从一次运行到下次运行的求解结果将会更加一致。因此,为了帮助确定最佳聚类数,对于 2 至 30 的每个聚类数,该工具会求解 10 次,并使用 10 个伪 F 统计量值的最大值。

  • K 均值K 中心点是两种常用的聚类算法,通常将产生类似的结果。但是,K 中心点对于输入要素中的噪声和异常值更加可靠。K 均值通常比 K 中心点更快,更适用于大型数据集。

  • 为一组要素分配的聚类编号在这次运行与下次运行中可能并不相同。例如,假设您根据收入变量将要素分成两个聚类。在首次运行分析时,您可能发现高收入要素被标为聚类 2,低收入要素被标为聚类 1;而在第二次运行相同的分析时,高收入要素可能被标为聚类 1。您还可能发现某些中间收入要素在两次运行中会相互交换聚类成员。

参数

标注说明数据类型
输入要素

要创建聚类的要素类或要素图层。

Feature Layer
输出要素

创建的新输出要素类,其中包含所有要素、指定的分析字段以及一个用于指明每个要素所属聚类的字段。

Feature Class
分析字段

用于区分各个聚类的字段的列表。

Field
聚类方法
(可选)

使用的聚类算法。K 均值是默认设置。

K 均值K 中心点是两种常用的聚类算法,通常将产生类似的结果。但是,K 中心点对于输入要素中的噪声和异常值更加可靠。K 均值通常比 K 中心点更快,更适用于大型数据集。

  • K 均值将使用 K 均值算法对输入要素进行聚类。这是默认设置。
  • K 中心点将使用 K 中心点算法对输入要素进行聚类。
  • K 均值将使用 K 均值算法对 in_features 进行聚类。这是默认设置。
  • K 中心点将使用 K 中心点算法对输入要素进行聚类。
String
初始化方法
(可选)

指定用于发展聚类的初始种子的获得方法。例如,如果您指明需要三个聚类,则分析将从三个种子开始。

  • 优化的种子位置选择种子要素以便优化分析结果和性能。这是默认设置。
  • 用户定义的种子位置初始化字段中的非零条目将被用作发展聚类的起点。
  • 随机种子位置将随机选择初始种子要素。
String
初始化字段
(可选)

用于标识种子要素的数值型字段。将使用此字段中具有 1 值的要素发展聚类。所有其他要素应该包含零值。

Field
聚类数
(可选)

要创建的聚类数。当将此参数留空时,该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量,以评估出最佳聚类数。

如果在初始化字段中提供了种子位置,该参数将被禁用。

Long
聚类数评估输出表
(可选)

经指定后,所创建的表中将包含经计算用来评估最佳聚类数的聚类解决方案 2 至 30 的伪 F 统计量。基于该表创建的图表可通过内容窗格独立表部分进行访问。

Table

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_MEANSK_MEDOIDS 是两种常用的聚类算法,通常将产生类似的结果。但是,K_MEDOIDS 对于 in_features 中的噪声和异常值更加可靠。K_MEANS 通常比 K_MEDOIDS 更快,更适用于大型数据集。

  • K_MEANS将使用 K 均值算法对 in_features 进行聚类。这是默认设置。
  • K_MEDOIDS将使用 K 中心点算法对输入要素进行聚类。
String
initialization_method
(可选)

指定用于发展聚类的初始种子的获得方法。例如,如果您指明需要三个聚类,则分析将从三个种子开始。

  • OPTIMIZED_SEED_LOCATIONS选择种子要素以便优化分析结果和性能。这是默认设置。
  • USER_DEFINED_SEED_LOCATIONSinitialization_field 中的非零条目将被用作发展聚类的起点。
  • RANDOM_SEED_LOCATIONS将随机选择初始种子要素。
String
initialization_field
(可选)

用于标识种子要素的数值型字段。将使用此字段中具有 1 值的要素发展聚类。所有其他要素应该包含零值。

Field
number_of_clusters
(可选)

要创建的聚类数。当将此参数留空时,该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量,以评估出最佳聚类数。

如果在初始化字段中提供了种子位置,该参数将被禁用。

Long
output_table
(可选)

经指定后,所创建的表中将包含经计算用来评估最佳聚类数的聚类解决方案 2 至 30 的伪 F 统计量。基于该表创建的图表可通过内容窗格独立表部分进行访问。

Table

代码示例

MultivariateClustering 示例 1(Python 窗口)

以下 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")
MultivariateClustering 示例 2(独立脚本)

以下独立 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())

环境

特殊情况

输出坐标系

执行分析之前,将要素几何投影到输出坐标系。所有数学计算都基于输出坐标系空间参考。输出坐标系基于度、分、秒时,测地线距离用弦距离估测。

随机数生成器

使用的随机数生成器类型始终为 Mersenne Twister。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题