R/decom_NMF.R

Defines functions decom_NMF

# decom_NMF.R
# ::rtemis::
# 2025 EDG rtemis.org

#' Non-negative Matrix Factorization (NMF)
#'
#' Decomposes a data matrix into non-negative factors using NMF.
#'
#' @param x A numeric matrix or data frame to be decomposed.
#' @param parameters `NMFParameters` object.
#' @param verbosity Integer: Verbosity level.
#'
#' @return A list containing the decomposition and transformed data.
#'
#' @author EDG
#' @keywords internal
#' @noRd
decom_NMF <- function(x, parameters, verbosity = 1L) {
  # Checks ----
  check_is_S7(parameters, NMFParameters)
  check_dependencies("NMF")
  check_unsupervised_data(x = x, allow_missing = FALSE)

  # Decompose ----
  xm <- as.matrix(x)
  args <- list(x = t(xm), rank = parameters[["k"]], nrun = parameters[["nrun"]])
  decom <- do_call(NMF::nmf, args)
  check_inherits(decom, "NMFfit")
  basis <- NMF::basis(decom)
  transformed <- xm %*% basis
  colnames(transformed) <- paste0("NMF_", seq_len(NCOL(transformed)))
  list(decom = decom, transformed = transformed)
} # /rtemis::decom_NMF
egenn/rtemis documentation built on June 14, 2025, 11:54 p.m.