插图
使用方法
-
此工具将生成一个包含分析中所使用字段以及一个名为 CLUSTER_ID 的新增整型字段的输出要素类。默认渲染将基于 CLUSTER_ID 字段,并会显示每个要素所属的聚类。例如,如果您指明需要 3 个聚类,则对于 CLUSTER_ID 字段,每个记录将包含 1、2 或 3。
- 输入可以是点或面。
-
该工具还会创建消息和图表,以帮助您了解所标识聚类的特征。您可以将鼠标悬停在进度条上来访问该消息,单击弹出按钮或展开地理处理窗格中的消息部分。您还可以通过地理处理历史来访问之前运行空间约束多元聚类工具的消息。 所创建的图表可从内容窗格进行访问。
-
分析字段应为数值型字段,而且应包含各种值。无任何变化的字段(即每个记录的值相同)将从分析中删除,但将包括在输出要素中。如果分类字段以哑元变量表示(值 1 表示类别中的所有要素,而 0 表示所有其他要素),则可以与该工具结合使用。
-
空间约束多元聚类工具将构建具有空间的聚类(并且在使用空间权重矩阵时可能有时间限制)。在某些应用中,您可能不想对所创建的聚类实施邻接或其他邻域分析要求。在这些情况下,请使用多元聚类工具来创建无空间约束的聚类。
可通过聚类大小约束参数管理聚类的大小。您可以设置每个聚类必须满足的最大和最小阈值。大小约束可以是每个聚类所包含的要素数量,也可以是属性值的总和。例如,如果根据一组经济变量对美国各县进行聚类,则可以指定每个聚类的最小人口数为 500 万,最大人口数为 2500 万。
在指定填充限制约束后,此算法会从单个聚类开始,然后分割聚类并求解,直至每个聚类均低于填充限制为止,在此过程中应将每次分割的所有变量均考虑在内。一旦满足约束条件,分割便会结束,即使进一步分割现有聚类也可以提供更好的结果。
如果设置的最大值和最小值彼此接近,则可能无法满足其中一个生成聚类的聚类大小约束参数值。
有时,由于最小跨度树的构建方式,可能无法满足所有聚类的聚类大小约束参数。该工具运行完成后,不满足大小约束的聚类将在消息中予以报告。
-
该工具可用于创建在空间上相邻的聚类。可以启用面要素类的邻接选项,来指明仅当要素与聚类中的另一成员共享某条边(仅邻接边)或者共享某条边或某个折点(邻接边拐角)时,才表示这些要素属于同一聚类。修剪型 Delaunay 三角测量选项确保可对异常值或岛屿要素进行聚类并可能形成不相连聚类。
点输入要素的默认空间约束为修剪型 Delaunay 三角测量,这将确保所有聚类成员都互相邻近,且仅当至少有一个其他要素为自然邻域时才会将某一要素包括在聚类中。这种方法使用 Delaunay 三角测量来查找点邻域,然后用凸包剪裁三角形。这可确保点要素无法与凸包外的任何要素相邻。
修剪型 Delaunay 三角测量选项可确保相邻要素彼此紧邻。如果您的数据中有空间异常值,则此方法可能影响不大。这是因为 Delaunay 三角形向外延伸过远,以致凸包修剪对那些在无空间异常值情况下相距较远的要素可能不会有太大的影响。
-
也可以施加其他空间约束,如固定距离或 K 最近邻,方法是首先使用生成空间权重矩阵工具创建空间权重矩阵文件 (.swm),然后为空间权重矩阵文件参数提供该文件的路径。
注:
即使您可以创建一个空间权重矩阵 (SWM) 文件来定义空间约束,但仍然不会应用实际权重。当在聚类算法中定义空间约束时,关系会变为二元关系,即使使用了反距离等方法也是如此。如果使用反距离时无距离中断,则结果为 SWM,它可基于权重定义要素,但聚类算法会忽略这些权重,并将每个要素定义为所有其他要素的一个邻域。这可能会影响性能,并会生成并非真的在空间上受到约束的组。同样,选择 K 最近邻概念化法可能会生成在空间上受到约束但不一定彼此邻近的聚类。
-
要创建具有空间和时间约束的聚类,请首先使用生成空间权重矩阵工具创建一个用于定义要素之间的空间-时间关系的空间权重矩阵文件 (.swm)。接下来,运行空间约束多元聚类工具,将空间约束参数设置为通过文件获取空间权重,并将空间权重矩阵文件参数设置为您所创建的 SWM 文件。
要创建三维聚类并将要素的 Z 值考虑在内,请首先使用生成空间权重矩阵工具并选中使用 Z 值参数来创建一个用于定义要素之间的 3D 关系的空间权重矩阵文件 (.swm)。接下来,运行空间约束多元聚类,将空间约束参数设置为通过文件获取空间权重,并将空间权重矩阵文件参数设置为您所创建的 SWM 文件。
此工具需依赖于内存。在使用“空间权重矩阵”时,可导致各要素拥有大量邻域的空间关系的概念化将增加出现内存问题的可能性。
定义空间约束可以确保各个聚类紧凑、连续或邻近。在分析字段列表中包括空间变量还会强化这些聚类属性。空间变量示例可包括高速公路驶入坡道的距离、职位空缺的可达性、购物机会的邻近性、连接测量值甚至坐标 (X, Y)。引入表示时间、周几或时态距离的变量可以促进聚类成员之间的时态紧凑性。
-
当要素的空间模式非常独特时(例如三个单独的、空间上独特的聚类),会使空间约束聚类算法复杂化。因此,聚类算法首先要会确定是否存在任何不相连的聚类。如果不相连的聚类数大于所指定的聚类数,则工具无法求解,并会显示相应的错误消息。如果不相连的聚类数与指定的聚类数完全相同,则要素的空间配置可以单独确定聚类结果,如下面的图 (A) 中所示。如果指定的聚类数大于不相连的聚类数,那么聚类将从已确定的不相连聚类开始。例如,如果有三个不相连的聚类,而指定的聚类数为 4,则三个聚类中的其中一个聚类将被分割,以便创建第四个聚类,如下面的图 (B) 中所示。
-
在某些情况下,空间约束多元聚类工具将无法满足所施加的空间约束,且无邻域的要素将成为其聚类中的唯一要素。将空间约束参数设置为修剪型 Delaunay 三角测量可帮助解决不相连聚类的问题。
-
虽然倾向于引入尽可能多的分析字段,但对此工具而言,最好从单个变量开始构建。较少的分析字段的结果更易于解释。而且,字段较少时,还易于确定哪些变量是最佳辨别因素。
-
有时,您可能知道最适合于数据的聚类数。但是,如果不知道,则必须尝试不同的聚类数,注意哪些值能够最恰当地对组进行区分。当将聚类数参数留空时,该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量,以评估出最佳聚类数,并在消息窗口中报告此最佳聚类数。如果指定了一个可选的聚类数评估输出表参数值,则将创建一个图表,其中显示具有 2 至 30 个聚类的解决方案的 F 统计量值。最大 F 统计量值指明在最大化聚类内相似性和聚类间差异性方面表现最佳的解决方案。如果没有其他标准指导您选择聚类数,可使用与其中一个最大伪 F 统计量值相关的数字。
-
无论您指定的聚类数为何,如果随意划分为其他聚类,则此工具将停止运行。例如,您的数据由三个空间聚类面和单个分析字段组成。如果聚类中的所有要素都具有相同的分析字段值,则在创建三个组后可以随意划分各个聚类。如果在这种情况下指定的聚类数多于三个,则此工具仍将仅创建三个聚类。只要聚类中至少有一个分析字段具有一些变量值,即可继续将其划分为其他聚类。
-
当在分析中引入空间或空间-时间约束时,伪 F 统计量值具有可比性(只要输入要素和分析字段不改变)。因此,您不但可以使用 F 统计量值确定最佳聚类数,还可以帮助您确定最有效的空间约束选项。
-
为一组要素分配的聚类编号在这次运行与下次运行中可能并不相同。例如,如果您根据收入变量将要素分割为两个聚类,则第一次运行分析时,您可能会看到标记为聚类 2 的高收入要素和标记为聚类 1 的低收入要素。第二次运行相同的分析时,高收入要素可能被标记为聚类 1。您还可能发现某些中间收入要素在两次运行中会相互交换聚类成员。
计算成员关系概率的置换参数使用置换和证据累积来计算各要素聚类成员关系的概率。高概率表示您可以确定相关要素属于为其分配的聚类。低概率可能表示相关要素与为其分配的聚类中的要素截然不同,或者如果对分析字段、聚类大小约束或空间约束参数值进行了某些更改,则表示相关要素可能包括在其他聚类中。计算这些概率时会用到随机跨度置换和证据累积。对于较大的数据集来说,此计算可能会耗费大量的运行时间。建议您首先进行迭代并为您的分析找到最佳聚类数,然后在随后的运行中计算分析的概率。您也可以通过提升并行处理因子环境来提升性能。
-
如果未投影输入要素(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。弦距离是基于扁椭球体计算的。给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。弦距离以米为单位输出。
警告:
如果您的研究区域超过 30 度,则最佳做法为投影数据。测地线距离超过 30 度时,弦距离不是理想的估测方法。
此工具支持并行处理计算概率,默认情况下使用 50% 的可用处理器。处理器数目可以通过使用“并行处理因子”环境增加或减少。
语法
arcpy.stats.SpatiallyConstrainedMultivariateClustering(in_features, output_features, analysis_fields, {size_constraints}, {constraint_field}, {min_constraint}, {max_constraint}, {number_of_clusters}, {spatial_constraints}, {weights_matrix_file}, {number_of_permutations}, output_table)
参数 | 说明 | 数据类型 |
in_features | 要创建聚类的要素类或要素图层。 | Feature Layer |
output_features | 创建的新输出要素类,其中包含所有要素、指定的分析字段以及一个用于指明每个要素所属聚类的字段。 | Feature Class |
analysis_fields [analysis_fields,...] | 将用于区分各个聚类的字段的列表。 | Field |
size_constraints (可选) | 根据每个组的要素数或每个组的目标属性值指定聚类大小。
| String |
constraint_field (可选) | 每个聚类进行求和的属性值。 | Field |
min_constraint (可选) | 每个聚类的最小要素数或每个聚类的最小属性值。该值必须为正值。 | Double |
max_constraint (可选) | 每个聚类的最大要素数或每个聚类的最大属性值。如果设置了最大约束,则会禁用 number_of_clusters 参数。该值必须为正值。 | Double |
number_of_clusters (可选) | 要创建的聚类数。如果此参数为空,则该工具将计算具有 2 至 30 个聚类的聚类解决方案的伪 F 统计量值,以评估出最佳聚类数。 如果已设置最大要素数或最大属性值,则将禁用此参数。 | Long |
spatial_constraints (可选) | 指定要素空间关系的定义方式。
| String |
weights_matrix_file (可选) | 包含空间权重(其定义要素间的空间关系以及可能的时态关系)的文件的路径。 | File |
number_of_permutations (可选) | 计算成员关系稳定性得分的随机置换次数。如果选择了 0(零),则不会计算概率。计算这些概率时会用到随机跨度树置换和证据累积。 对于较大的数据集来说,此计算可能会耗费大量的运行时间。建议您首先进行迭代并为您的分析找到最佳聚类数,然后在随后的运行中计算分析的概率。将并行处理因子环境设置设为 50 可改善该工具的运行时间。 | Long |
output_table | 所创建的表格,其中包含经计算用来评估最佳聚类数的 F 统计量值结果。根据该表创建的图表可以在输出要素图层下的内容窗格中进行访问。 | Table |
代码示例
以下 Python 窗口脚本演示了如何使用 SpatiallyConstrainedMultivariateClustering 工具。
import arcpy arcpy.env.workspace = r"C:\Analysis arcpy.SpatiallyConstrainedMultivariateClustering_stats("CA_schools", "CA_Schools_100k_Students", "NumStudent", "ATTRIBUTE_VALUE", "NumStudent", 100000, None, None,
"CONTIGUITY_EDGES_CORNERS")
以下 Python 脚本演示了如何使用 SpatiallyConstrainedMultivariateClustering 工具。
# Creating regions of similar schools districts with at least 100,0000 students each
# Import system modules
import arcpy
# Set property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = r"E:\working\data.gdb"
arcpy.env.workspace = workspace
# Create clusters of schools with a minimum of 100,000 students
arcpy.stats.SpatiallyConstrainedMultivariateClustering("CA_schools", "CA_Schools_100k_Students", "NumStudent",
"ATTRIBUTE_VALUE", "NumStudent", 100000, None, None,
"CONTIGUITY_EDGES_CORNERS")
# Create a spatial weights matrix using k nearest neighbors 16 to have more control over the search neighborhood
arcpy.stats.GenerateSpatialWeightsMatrix(r"E:\working\data.gdb\CA_schools", "UID",
r"E:\working\schools_knn_16.swm", "K_NEAREST_NEIGHBORS", "EUCLIDEAN", 1,
None, 16, "NO_STANDARDIZATION", None, None, None, None, "DO_NOT_USE_Z_VALUES")
# Create clusters again this time using the SWM file for search neighborhood and a maximum number
# of students per cluster
arcpy.stats.SpatiallyConstrainedMultivariateClustering("CA_schools", "CA_Schools_SWM_Knn16", "NumStudent", "ATTRIBUTE_VALUE",
"NumStudent", None, 250000, None, "GET_SPATIAL_WEIGHTS_FROM_FILE",
r"E:\working\schools_knn_16.swm")
# Use Summary Statistics with Cluster ID as a case field to see how many students were assigned to each cluster
arcpy.analysis.Statistics("CA_Schools_SWM_Knn16", "School_SummaryStatistics", "NumStudent SUM", "CLUSTER_ID")
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是