使用空间统计模型文件预测 (空间统计)

摘要

使用经过训练的空间统计模型(.ssm 文件)预测连续或分类值。

了解有关空间统计模型文件的详细信息

使用情况

  • 以下也是使用此功能的示例场景:

    • 给定一个经过训练的基于森林的海草发生分类和回归模型,使用许多表示为属性和栅格的环境解释变量,除了与上游工厂和主要港口的距离之外,还可以根据对这些环境解释变量的未来预测,预测未来海草的出现。
    • 由专家训练的模型可以与其他人共享以进行预测,而无需共享敏感数据。 例如,有关儿童血铅水平及其房屋的征税宗地 ID 的信息模型,结合宗地属性(例如房屋年龄)、人口普查数据(例如收入和教育水平)和反映铅和铅化合物的毒物排放的国家数据集,可以预测没有血铅水平数据的宗地的铅暴露风险。 此类风险预测可能会推动该地区的政策和教育计划。
    • 一位野生动物生态学家采集了观测到的濒危物种存在位置的外业数据。 他们需要估计该物种在更广泛研究领域的存在,并与其他研究人员共享他们的工作。 使用已知的存在位置并提供基本因素作为栅格,生态学家可以使用仅存在预测对物种的存在进行建模,并共享经过训练的模型,而无需共享有关物种出现的敏感信息。 模型可用于创建最有可能发现该物种的预测位置的地图。

  • 输入模型文件参数值是由空间统计工具箱的空间关系建模工具集中的各种工具创建的空间统计模型文件 (.ssm)。 您可以使用广义线性回归基于森林的分类和回归以及仅存在预测 (MaxEnt) 工具创建模型文件,方法是在每个工具中指定输出训练模型文件参数值。

    查看广义线性回归的工作原理基于森林的分类和回归的工作原理以及仅存在预测的工作原理,以了解每个模型如何对每个模型类型进行预测。

  • 使用预测类型参数的预测要素选项时,使用输出预测要素参数创建具有预测的要素类。 使用预测到栅格选项时,使用输出预测表面参数创建预测值的栅格。

  • 要预测为栅格,必须仅使用栅格对 .ssm 文件进行训练。

  • 需要 ArcGIS Spatial Analyst extension 许可才能使用使用栅格训练的 .ssm 文件。

    注:

    建议您在运行此工具之前先运行描述空间统计模型文件工具,以了解变量名称、类型、描述和单位以相应地准备数据。 您还可以使用模型诊断来评估输入模型文件的质量。

  • 解释变量可以来自字段、可通过距离要素进行计算得出或者从栅格中提取得出。 解释变量的组合应与输入模型文件相匹配。

  • 如果在创建模型文件时将解释变量或栅格标记为分类,则将检查分类参数并将匹配变量视为分类。 您可以在运行此工具之前使用描述空间统计模型文件工具来确定模型文件中哪些变量是分类变量。

  • 训练和预测变量的字段类型应该匹配。 例如,如果训练字段是文本,则对应的预测变量也应该是文本。

    注:

    建议您在匹配训练和预测变量之前设置变量单位。 如果训练好的模型文件和预测的变量单位不同,结果可能不正确。 例如,如果您使用以美元为单位的收入变量训练模型,但在进行预测时将该变量与以印度卢比为单位的收入进行匹配,则训练变量和预测变量之间的变量范围可能不一致,从而导致预测变量不准确。

  • 该工具还创建描述模型性能的消息和图表。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以使用地理处理历史访问之前运行工具的消息。 这些消息包括模型诊断和有关模型的其他信息。

  • 在地理处理消息中,模型参数表描述了要预测的变量和字段类型以及用于创建模型的解释变量。 该表还包含每个变量的单位(如果使用设置空间统计模型文件属性工具设置),以帮助确保在使用模型进行预测时它们与预测变量保持一致。

    警告:

    建议您在信任预测结果之前评估模型诊断。 如果在不保留任何验证数据的情况下训练模型,则无法评估预测的准确性。

    警告:

    使用 ArcPy 运行工具时,匹配解释变量匹配距离要素匹配解释栅格参数值表中提供的变量的顺序和大小写很重要。 例如,如果您有两个表示温度和湿度的解释变量,并且温度值预期在湿度值之前,则您必须按该顺序提供变量。 使用描述空间统计模型文件工具的派生输出来获取输入模型文件中存储的变量的正确顺序。

参数

标注说明数据类型
输入模型文件

用于新预测的空间统计模型文件。

File
预测类型

指定要使用的操作模式。 该工具可以预测新要素或创建预测栅格表面。

  • 预测至要素将针对要素生成预测或分类。 必须提供解释变量以匹配用于训练输入模型文件的变量。 此选项的输出将是消息窗口中的要素类和模型诊断。
  • 预测至栅格对于解释栅格相交的区域,将生成预测栅格。 必须提供解释栅格以匹配用于训练输入模型文件的栅格。 该选项的输出将为预测表面、消息窗口中的模型诊断。
String
输入预测要素
(可选)

表示将进行预测的位置的要素类。 此要素类还必须包含作为字段提供的任何解释变量,这些字段与用于训练输入模型的那些相对应。

Feature Layer
输出预测要素
(可选)

包含预测结果的输出要素类。

Feature Class
输出预测栅格
(可选)

包含预测结果的输出栅格。 默认像元大小将为输入栅格的最大像元大小。

Raster Dataset
匹配解释变量
(可选)

输入模型的解释变量列表和输入预测要素的对应字段。 对于 Training 列中的每个解释变量,在 Prediction 列中提供相应的预测字段。 Categorical 列指定变量是分类变量还是连续变量。

Value Table
匹配距离要素
(可选)

输入模型的解释距离要素和相应的预测距离要素的列表。 对于 Training 列中的每个解释距离要素,在 Prediction 列中提供相应的预测距离要素。

Value Table
匹配解释栅格
(可选)

输入模型的解释栅格和相应的预测栅格的列表。 对于 Training 列中的每个解释栅格,在 Prediction 列中提供相应的预测栅格。 Categorical 列指定栅格是分类栅格还是连续栅格。

Value Table

arcpy.stats.PredictUsingSSMFile(input_model, prediction_type, {features_to_predict}, {output_features}, {output_raster}, {explanatory_variable_matching}, {explanatory_distance_matching}, {explanatory_rasters_matching})
名称说明数据类型
input_model

用于新预测的空间统计模型文件。

File
prediction_type

指定要使用的操作模式。 该工具可以预测新要素或创建预测栅格表面。

  • PREDICT_FEATURES将针对要素生成预测或分类。 必须提供解释变量以匹配用于训练输入模型文件的变量。 此选项的输出将是消息窗口中的要素类和模型诊断。
  • PREDICT_RASTER对于解释栅格相交的区域,将生成预测栅格。 必须提供解释栅格以匹配用于训练输入模型文件的栅格。 该选项的输出将为预测表面、消息窗口中的模型诊断。
String
features_to_predict
(可选)

表示将进行预测的位置的要素类。 此要素类还必须包含作为字段提供的任何解释变量,这些字段与用于训练输入模型的那些相对应。

Feature Layer
output_features
(可选)

包含预测结果的输出要素类。

Feature Class
output_raster
(可选)

包含预测结果的输出栅格。 默认像元大小将为输入栅格的最大像元大小。

Raster Dataset
explanatory_variable_matching
[[pred1, train1, cat1], [pred2, train2, cat2],...]
(可选)

输入模型的解释变量列表和输入预测要素的对应字段。 对于 Training 列中的每个解释变量,在 Prediction 列中提供相应的预测字段。 Categorical 列指定变量是分类变量还是连续变量。

Value Table
explanatory_distance_matching
[[pred1, cat1], [pred2, cat2],...]
(可选)

输入模型的解释距离要素和相应的预测距离要素的列表。 对于 Training 列中的每个解释距离要素,在 Prediction 列中提供相应的预测距离要素。

Value Table
explanatory_rasters_matching
[[pred1, train1, cat1], [pred2, train2, cat2],...]
(可选)

输入模型的解释栅格和相应的预测栅格的列表。 对于 Training 列中的每个解释栅格,在 Prediction 列中提供相应的预测栅格。 Categorical 列指定栅格是分类栅格还是连续栅格。

Value Table

代码示例

PredictUsingSSMFile 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 PredictUsingSSMFile 函数。


arcpy.stats.PredictUsingSSMFile(
      "PredictAsthma_Forest.ssm", "PREDICT_FEATURES", 
      "MedicareSpendingData", "Predicted_features", None, 
      "AVERAGE_HCC_SCORE_2010_CAT AVERAGE_HCC_SCORE_2010_CAT true;
      HOSPBEDSD_INT HOSPBEDSD_INT false; 
      PERCENT_ASTHMA_2010_DBL PERCENT_ASTHMA_2010_DBL false", 
      "Distance_Hospital DF_POLY", "EVANDMAND_RASTER EVANDMAND #")
PredictUsingSSMFile 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 PredictUsingSSMFile 函数。

# Predict to Raster using the Predict using spatial statistics model file tool 

# Import system modules.
import arcpy
import os

# Set workspace.
arcpy.env.workspace = r"C:\Analysis"
arcpy.env.overwriteOutput = True

# Read the explanatory raster order and variable names using Describe Spatial 
# Statistics Model File tool.
in_model = "Suitability.ssm"
desc_result = arcpy.stats.DescribeSSMFile(in_model)

# Print the list of explanatory rasters.
print(desc_result[2])

# Split the explanatory raster strings into a list of variable names.
exp_ras = desc_result[2].split(";")

# Set Parameters for prediction.
prediction_type="PREDICT_RASTER"
out_raster= "suitability_predicted_raster.tif"
match_exp_ras0 = "Climate_Bio2050.tif"
match_exp_ras1 = "Climate_Temp2050.tif"
match_exp_ras2 = "Climate_Solar2050.tif"
match_rasters = [[match_exp_ras0, exp_ras[0], None], 
                 [match_exp_ras1, exp_ras[1], None], 
                 [match_exp_ras2, exp_ras[2], None]]

# Run tool.
arcpy.stats.PredictUsingSSMFile(in_model, prediction_type, "", "", out_raster, 
                "", "", match_rasters)

环境

特殊情况

随机数生成器

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