1 menjawab

Jawaban Terbaik

Berikut adalah ide. Saya memesan output dengan y (nilai tertinggi mutlak di atas), mengambil lima x pertama dan membersihkan namanya. Nilai count_test dan nama dari x ditulis dalam kerangka data yang telah ditentukan (df).

Oleh karena itu hasilnya mungkin diatur seperti pada gambar output Anda.

library(tidyverse)

df <- data.frame(Inpuvalue = NA, 
                 Attribut1 = NA, 
                 Attribut2 = NA,
                 Attribut3 = NA,
                 Attribut4 = NA,
                 Attribut5 = NA)

count_test<-c(1,9,100,22,45)
for (i in count_test)
{ 
  r<-showWaterfall(xgb, explainer, k1, X_test, i, type = "binary")
  
  attribut <-as.data.frame(r$data) %>%
    arrange(desc(y)) %>% 
    filter(x != "intercept") %>%
    slice(1:5) %>% 
    pull(x) %>%
    str_remove(., "\\s=.*")
  
  df[which(i == count_test), ] <- c(i, attribut)  

}

´´´
1
tamtam 2 September 2020, 19:14