gensvm.maxabs.scale {gensvm} | R Documentation |
Scale each column of a matrix by its maximum absolute value
Description
Scaling a dataset can greatly decrease the computation time of GenSVM. This function scales the data by dividing each column of a matrix by the maximum absolute value of that column. This preserves sparsity in the data while mapping each column to the interval [-1, 1].
Optionally a test dataset can be provided as well. In this case, the scaling
will be computed on the first argument (x
) and applied to the test
dataset. Note that the return value is a list when this argument is
supplied.
Usage
gensvm.maxabs.scale(x, x.test = NULL)
Arguments
x |
a matrix to scale |
x.test |
(optional) a test matrix to scale as well. |
Value
if x.test=NULL a scaled matrix where the maximum value of the
columns is 1 and the minimum value of the columns isn't below -1. If x.test
is supplied, a list with elements x
and x.test
representing
the scaled datasets.
Author(s)
Gerrit J.J. van den Burg, Patrick J.F. Groenen
Maintainer: Gerrit J.J. van den Burg <gertjanvandenburg@gmail.com>
References
Van den Burg, G.J.J. and Groenen, P.J.F. (2016). GenSVM: A Generalized Multiclass Support Vector Machine, Journal of Machine Learning Research, 17(225):1–42. URL https://jmlr.org/papers/v17/14-526.html.
See Also
gensvm
, gensvm.grid
,
gensvm.train.test.split
, gensvm-package
Examples
x <- iris[, -5]
# check the min and max of the columns
apply(x, 2, min)
apply(x, 2, max)
# scale the data
x.scale <- gensvm.maxabs.scale(x)
# check again (max should be 1.0, min shouldn't be below -1)
apply(x.scale, 2, min)
apply(x.scale, 2, max)
# with a train and test dataset
split <- gensvm.train.test.split(x)
x.train <- split$x.train
x.test <- split$x.test
scaled <- gensvm.maxabs.scale(x.train, x.test)
x.train.scl <- scaled$x
x.test.scl <- scaled$x.test