Skip to content

RBFSampler

Extracts random features which approximate an RBF kernel.

This is a powerful way to give non-linear capacity to linear classifiers. This method is also called "random Fourier features" in the literature.

Parameters

  • gamma – defaults to 1.0

    RBF kernel parameter in (-gamma * x^2).

  • n_components – defaults to 100

    Number of samples per original feature. Equals the dimensionality of the computed feature space.

  • seed (int) – defaults to None

    Random number seed.

Examples

>>> from river import feature_extraction as fx
>>> from river import linear_model as lm
>>> from river import optim
>>> from river import stream

>>> # XOR function
>>> X = [[0, 0], [1, 1], [1, 0], [0, 1]]
>>> Y = [0, 0, 1, 1]

>>> model = lm.LogisticRegression(optimizer=optim.SGD(.1))

>>> for x, y in stream.iter_array(X, Y):
...     model = model.learn_one(x, y)
...     y_pred = model.predict_one(x)
...     print(y, int(y_pred))
0 0
0 0
1 0
1 1

>>> model = (
...     fx.RBFSampler(seed=3) |
...     lm.LogisticRegression(optimizer=optim.SGD(.1))
... )

>>> for x, y in stream.iter_array(X, Y):
...     model = model.learn_one(x, y)
...     y_pred = model.predict_one(x)
...     print(y, int(y_pred))
0 0
0 0
1 1
1 1

Methods

learn_one

Update with a set of features x.

A lot of transformers don't actually have to do anything during the learn_one step because they are stateless. For this reason the default behavior of this function is to do nothing. Transformers that however do something during the learn_one can override this method.

Parameters

  • x (dict)

Returns

Transformer: self

transform_one

Transform a set of features x.

Parameters

  • x (dict)
  • y – defaults to None

Returns

dict: The transformed values.

References