當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。