mojolearn.KNeighborsRegressor#

class mojolearn.KNeighborsRegressor(n_neighbors=5, query_tile=0, *, weights='uniform', metric='euclidean', algorithm='brute', p=2)[source]#

Bases: NearestNeighbors

Regressor that averages the targets of the k nearest training points.

Each prediction is the mean of the n_neighbors nearest targets, or with weights='distance' the weighted mean sum(w * y) / sum(w) with w = 1 / d. Neighbor search is exact brute force, as in NearestNeighbors. Targets are converted to float32.

Parameters:
  • n_neighbors (int, default 5) – Number of neighbors averaged. Must be between 1 and the number of training samples.

  • query_tile (int, default 0) – As in NearestNeighbors: memory use only, never the answer.

  • weights ({‘uniform’, ‘distance’} or None, default ‘uniform’) – ‘uniform’ (or None) averages equally. ‘distance’ follows scikit-learn, including its rule for neighbors at distance exactly zero (they get weight 1, the rest of that row 0). A callable raises ValueError, as does ‘distance’ with metric='inner_product'.

  • metric (str, default ‘euclidean’) – As in NearestNeighbors with algorithm='brute'.

  • algorithm ({‘brute’, ‘auto’}, default ‘brute’) – Exact brute force. ‘rbc’ raises ValueError here; use NearestNeighbors(algorithm='rbc').kneighbors instead.

  • p (float, default 2) – As in NearestNeighbors.

  • numeric_mode ({‘identical’, ‘deterministic’, ‘fast’}, optional) – As in NearestNeighbors. ‘fast’ is available on Apple GPUs only.

Variables:
  • outputs_2d_ (bool) – Whether y had more than one output column.

  • n_samples_fit_ (int) – Number of training samples.

  • n_features_in_ (int) – Number of features seen at fit.

  • used_query_tile_ (int) – Query batch size the last prediction ran with.

Examples

>>> import numpy as np, mojolearn
>>> rng = np.random.default_rng(0)
>>> X = rng.random((1000, 8), dtype=np.float32)
>>> y = X.sum(axis=1)
>>> reg = mojolearn.KNeighborsRegressor(n_neighbors=5).fit(X, y)
>>> pred = reg.predict(X[:10])
__init__(n_neighbors=5, query_tile=0, *, weights='uniform', metric='euclidean', algorithm='brute', p=2)[source]#

Methods

fit(X, y)

Store the training points and their targets.

get_params([deep])

kneighbors(X[, n_neighbors, return_distance])

Find the nearest fitted points to each query, nearest first.

load(path)

Load a model written by save.

numeric_mode_used()

The numeric mode this estimator runs in.

predict(X)

Predict each query's target from its neighbors.

save(path)

Save the fitted model to an .npz file.

set_params(**params)

Set constructor parameters.

vendor_used()

The GPU backend this estimator runs on.

save(path)[source]#

Save the fitted model to an .npz file.

The file holds the training points, targets and parameters. mojolearn.host_model(path) can predict from it on a CPU with no GPU.

Parameters:

path (str or path-like) – Destination file.

Raises:

RuntimeError – If the model is not fitted.

classmethod load(path)[source]#

Load a model written by save.

Parameters:

path (str or path-like) – File written by save.

Returns:

KNeighborsRegressor – A fitted model, ready for predict.

fit(X, y)[source]#

Store the training points and their targets.

Parameters:
  • X (array-like of shape (n_samples, n_features)) – Training points; converted to float32.

  • y (array-like, shape (n_samples,) or (n_samples, n_outputs)) – Numeric targets; converted to float32. A 2-D y is averaged column by column.

Returns:

self

predict(X)[source]#

Predict each query’s target from its neighbors.

Parameters:

X (array-like of shape (n_queries, n_features)) – Query points; converted to float32.

Returns:

Array of float32, shape (n_queries,) or (n_queries, n_outputs) – The (weighted) mean target; 2-D when y was 2-D.

Raises:

ValueError – If the model is not fitted, X has the wrong number of features, or n_neighbors exceeds the number of training samples.