描述
通过计算每个要素的局部异常值因子 (LOF) 来标识点要素中的空间异常值。空间异常值是异常隔离的位置中的要素,LOF 是一种测量,用于描述某个位置与其局部相邻要素之间的隔离程度。LOF 值越高,表示隔离程度越高。该工具还可用于生成栅格预测曲面,该曲面可用于估计在给定数据空间分布的情况下,是否将新要素分类为异常值。
插图
使用方法
该工具用于将输入要素参数中提供的点标识为空间异常值或空间正常值。
该工具将执行 LOF 计算,以基于点要素附近要素的空间分布来估计该点要素为异常值的程度。
该工具将在相邻要素的数目参数中指定的每个要素周围使用局部邻域。
视为异常值的位置的百分比参数用于为 LOF 建立阈值,以将每个点要素指定为异常值或正常值。
注:
对于视为异常值的位置的百分比参数,值的微小差异可能会导致指定为异常值的输出要素计数相同。当要素的空间分布相似性导致多个要素的 LOF 值相同时,将会出现这种情况。
输出要素包括两个图表。第一个是条形图,可显示异常值和正常值。第二个是直方图,可显示所有点要素的 LOF 值分布,以及用于确定某个要素是异常值还是正常值的 LOF 阈值。
如果输入要素具有 Shape.Z 几何属性,则该工具将通过检测 3D 空间中的空间异常值来支持数据的 3D 特性。添加到场景视图后,输出要素将以 3D 方式显示,以可视化 3D 空间异常值。如果未在垂直坐标系中定义 Shape.Z 的单位(例如,米),则假设该单位与 Shape.X 和 Shape.Y 的单位相同。
输出预测栅格参数为可选输出,其中包含 LOF 结果作为整个研究区域的连续表面,可用于确定将来的观测值是否为异常值,而无需重新计算新点的 LOF 值。要创建输出栅格,请将输入要素用作训练数据,并根据训练数据的空间分布在每个栅格像元的中心计算 LOF 值。只能为 2D 输入要素创建此输出。
注:
即使点与栅格的像元中心重合,这些点的 LOF 值也将与每个点下的栅格像元的 LOF 值不匹配。这是因为要素并未使用自身作为邻域,但是栅格像元确实将该要素用作相邻要素,因此每次计算都将使用不同的邻域并产生不同的 LOF 值。
有关局部异常值因子的详细信息,请参阅以下参考资料:
- Breunig, M. M., Kriegel, H. P., Ng, R. T., Sander, J. (2000). "LOF: identifying density-based local outliers." Proceedings of the 2000 ACM SIGMOD international conference on Management of data. (pp. 93-104).
语法
arcpy.stats.SpatialOutlierDetection(in_features, output_features, {n_neighbors}, {percent_outlier}, {output_raster})
参数 | 说明 | 数据类型 |
in_features | 用于构建空间异常值检测模型的点要素。将根据每个点的局部异常值因子将其分类为异常值或正常值。 | Feature Layer |
output_features | 输出要素类,其中包含每个输入要素的局部异常值因子以及该点是否为空间异常值的指示符。 | Feature Class |
n_neighbors (可选) | 在计算局部异常值因子时要包含的相邻要素的数目。与输入点距离最近的要素将用作相邻要素。默认值为 20。 | Long |
percent_outlier (可选) | 通过定义局部异常值因子的阈值,要标识为空间异常值的位置的百分比。如果未指定任何值,则将在运行时估计一个值,并将其显示为地理处理消息。 | Double |
output_raster (可选) | 输出栅格,其中包含每个像元处的局部异常值因子,将基于输入要素的空间分布进行计算。 | Raster Dataset |
代码示例
以下 Python 窗口脚本演示了如何使用 SpatialOutlierDetection 工具。
arcpy.stats.SpatialOutlierDetection("Transaction_Locations",
"Transactions_SpatialOutliers", 20, 5,
"Transactions_OutliersPredictionSurface")
以下独立 Python 脚本演示了如何使用 SpatialOutlierDetection 工具。
# Import system modules.
import arcpy
try:
# Set the workspace and input features.
arcpy.env.workspace = 'C:\\SpatialOutlierDetection\\MyData.gdb'
inputFeatures = "PM25_AirQualityStations"
# Set the name of the output features
outputFeatures = "AirQualityStations_SpatialOutliers"
# Set the number of neighbors
numberNeighbors = 8
# Set the percentage of locations considered outliers
pcntLocationsAsOutliers = 10
# Set the output prediction raster
outputPredictionRaster = airQualityStations_OutPredictionRaster
# Run the Spatial Outlier Detection tool
arcpy.stats.SpatialOutlierDetection(inputFeatures, outputFeatures,
numberNeighbors, pcntLocationsAsOutliers, outputPredictionRaster)
except arcpy.ExecuteError:
# If an error occurred when running the tool, print the error message.
print(arcpy.GetMessages())
许可信息
- Basic: 受限
- Standard: 受限
- Advanced: 受限