gensvm.maxabs.scale: Scale each column of a matrix by its maximum absolute value

View source: R/gensvm.maxabs.scale.R

gensvm.maxabs.scaleR 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


gensvm documentation built on Feb. 16, 2023, 5:58 p.m.