当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R spatialsample spatial_clustering_cv 空间聚类交叉验证


空间聚类交叉验证通过基于空间坐标的聚类点将数据分成 V 组不相交的集合。分析数据的重采样由 V-1 的折叠/簇组成,而评估集包含最终的折叠/簇。

用法

spatial_clustering_cv(
  data,
  v = 10,
  cluster_function = c("kmeans", "hclust"),
  radius = NULL,
  buffer = NULL,
  ...,
  repeats = 1,
  distance_function = function(x) as.dist(sf::st_distance(x))
)

参数

data

sf 对象(通常来自 sf::read_sf()sf::st_as_sf() )拆分为折叠。

v

数据集的分区数。

cluster_function

应该使用哪个函数进行聚类?选项为 "kmeans" (使用 stats::kmeans() )或 "hclust" (使用 stats::hclust() )。您也可以提供自己的函数;请参阅Details

radius

数字:initially-selected 测试点的此距离内的点将被分配到评估集。如果 NULL ,则不应用半径。

buffer

数字:测试集中任何点的此距离内的点(应用 radius 后)将不会分配给分析集或评估集。如果 NULL ,则不应用缓冲区。

...

额外的参数传递给 stats::kmeans()stats::hclust()

repeats

重复集群分区的次数。

distance_function

应该使用哪个函数来计算距离?默认为 sf::st_distance() ,输出矩阵转换为 stats::dist() 对象。您也可以提供自己的函数;查看具体信息。

带有类 spatial_clustering_cvspatial_rsetrsettbl_dftbldata.frame 的 tibble。结果包括数据分割对象的列和标识变量 id 。从非 sf 对象创建的重新采样将不具有 spatial_rset 类。

细节

如果 datasf 对象,则根据观测值之间的距离创建聚类。每个簇都用作交叉验证的折叠。根据数据在空间上的分布方式,每个折叠中的观测值数量可能不相等。

您可以选择向 distance_function. 提供自定义函数。该函数应采用 sf 对象并返回带有数据点之间距离的 stats::dist() 对象。

您可以选择向 cluster_function 提供自定义函数。该函数必须采用三个参数:

  • dists ,一个带有数据点之间距离的 stats::dist() 对象

  • v ,一个长度为 1 的数字,表示要创建的折叠数

  • ... ,将任何其他命名参数传递给您的函数

该函数应返回长度为 nrow(data) 的簇分配向量,向量的每个元素对应于数据帧的匹配行。

空间样本 0.3.0 的变化

从 Spatialsample 版本 0.3.0 开始,此函数不再接受非 sf 对象作为 data 的参数。为了使用非空间数据执行聚类,请考虑使用 rsample::clustering_cv()

同样从版本 0.3.0 开始,此函数现在计算非点几何图形的 edge-to-edge 距离,与包的其余部分一致。早期版本依赖于 between-centroid 距离。

参考

A. Brenning,“遥感预测规则评估的空间交叉验证和引导程序:R 包 sperrorest”,2012 年 IEEE 国际地球科学和遥感研讨会,慕尼黑,2012 年,第 5372-5375 页,doi:10.1109/IGARSS.2012.6352393。

例子

data(Smithsonian, package = "modeldata")

smithsonian_sf <- sf::st_as_sf(
  Smithsonian,
  coords = c("longitude", "latitude"),
  # Set CRS to WGS84
  crs = 4326
)

# When providing sf objects, coords are inferred automatically
spatial_clustering_cv(smithsonian_sf, v = 5)
#> #  5-fold spatial cross-validation 
#> # A tibble: 5 × 2
#>   splits         id   
#>   <list>         <chr>
#> 1 <split [18/2]> Fold1
#> 2 <split [16/4]> Fold2
#> 3 <split [9/11]> Fold3
#> 4 <split [18/2]> Fold4
#> 5 <split [19/1]> Fold5

# Can use hclust instead:
spatial_clustering_cv(smithsonian_sf, v = 5, cluster_function = "hclust")
#> #  5-fold spatial cross-validation 
#> # A tibble: 5 × 2
#>   splits         id   
#>   <list>         <chr>
#> 1 <split [19/1]> Fold1
#> 2 <split [4/16]> Fold2
#> 3 <split [19/1]> Fold3
#> 4 <split [19/1]> Fold4
#> 5 <split [19/1]> Fold5

相关用法


注:本文由纯净天空筛选整理自Michael Mahoney等大神的英文原创作品 Spatial Clustering Cross-Validation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。