+++ /dev/null
-#' @include b_LinearAlgorithm.R
-
-#' @title MLpoly Algorithm
-#'
-#' @description MLpoly Algorithm.
-#' Inherits \code{\link{LinearAlgorithm}}
-#'
-#' @field alpha Importance of weights redistribution, in [0,1]. Default: 0
-#' @field grad Whether to use or not the (sub)gradient trick. Default: FALSE
-#'
-MLpoly = setRefClass(
- Class = "MLpoly",
-
- fields = c(
- alpha = "numeric",
- grad = "logical"
- ),
-
- contains = "LinearAlgorithm",
-
- methods = list(
- initialize = function(...)
- {
- callSuper(...)
- if (length(alpha) == 0 || alpha < 0. || alpha > 1.)
- alpha <<- 0. #no redistribution
- if (length(grad) == 0)
- grad <<- FALSE
- },
- predict_noNA = function(XY, x)
- {
- K = ncol(XY) - 1
- if (K == 1)
- {
- #shortcut: nothing to combine
- finalWeight = 1.
- }
-
- else
- {
- X = XY[,names(XY) != "Measure"]
- Y = XY[,"Measure"]
- finalWeight = .C("ml_predict_noNA", X = as.double(t(X)), Y = as.double(Y), n = as.integer(nrow(XY)),
- K = as.integer(K), alpha=as.double(alpha), grad = as.integer(grad), weight=double(K))$weight
- }
-
- appendWeight(finalWeight)
- return (matricize(x) %*% finalWeight)
- }
- )
-)