Alien-XGBoost

 view release on metacpan or  search on metacpan

xgboost/R-package/R/xgb.plot.importance.R  view on Meta::CPAN

    stop("importance_matrix: must be a data.table")
  }

  imp_names <- colnames(importance_matrix)
  if (is.null(measure)) {
    if (all(c("Feature", "Gain") %in% imp_names)) {
      measure <- "Gain"
    } else if (all(c("Feature", "Weight") %in% imp_names)) {
      measure <- "Weight"
    } else {
      stop("Importance matrix column names are not as expected!")
    }
  } else {
    if (!measure %in% imp_names)
      stop("Invalid `measure`")
    if (!"Feature" %in% imp_names)
      stop("Importance matrix column names are not as expected!")
  }
  
  # also aggregate, just in case when the values were not yet summed up by feature
  importance_matrix <- importance_matrix[, Importance := sum(get(measure)), by = Feature]
  
  # make sure it's ordered
  importance_matrix <- importance_matrix[order(-abs(Importance))]
  
  if (!is.null(top_n)) {
    top_n <- min(top_n, nrow(importance_matrix))
    importance_matrix <- head(importance_matrix, top_n)
  }
  if (rel_to_first) {
    importance_matrix[, Importance := Importance/max(abs(Importance))]
  }
  if (is.null(cex)) {
    cex <- 2.5/log2(1 + nrow(importance_matrix))
  }
  
  if (plot) {
    op <- par(no.readonly = TRUE)
    mar <- op$mar
    if (!is.null(left_margin))
      mar[2] <- left_margin
    par(mar = mar)
    
    # reverse the order of rows to have the highest ranked at the top
    importance_matrix[nrow(importance_matrix):1,
                      barplot(Importance, horiz = TRUE, border = NA, cex.names = cex,
                              names.arg = Feature, las = 1, ...)]
    grid(NULL, NA)
    # redraw over the grid
    importance_matrix[nrow(importance_matrix):1,
                      barplot(Importance, horiz = TRUE, border = NA, add = TRUE)]
    par(op)
  }
  
  invisible(importance_matrix)
}

# Avoid error messages during CRAN check.
# The reason is that these variables are never declared
# They are mainly column names inferred by Data.table...
globalVariables(c("Feature", "Importance"))



( run in 1.465 second using v1.01-cache-2.11-cpan-39bf76dae61 )