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.
RBF kernel parameter in
(-gamma * x^2).
Number of samples per original feature. Equals the dimensionality of the computed feature space.
Type → int | None
Random number seed.
from river import feature_extraction as fx from river import linear_model as lm from river import optim from river import stream 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
Update with a set of features
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.
- x — 'dict'
Transform a set of features
- x — 'dict'
- y — defaults to
dict: The transformed values.