pyoselm.elm.ELMRegressor

class pyoselm.elm.ELMRegressor(n_hidden=20, alpha=0.5, rbf_width=1.0, activation_func='sigmoid', activation_args=None, user_components=None, regressor=None, random_state=None)[source]

Regression model based on Extreme Learning Machine.

An Extreme Learning Machine (ELM) is a single layer feedforward network with a random hidden layer components and ordinary linear least squares fitting of the hidden->output weights by default. [1][2]

ELMRegressor is a wrapper for an GenELMRegressor that creates a RandomLayer based on the given parameters.

Parameters
  • n_hidden (int, optional (default=20)) – Number of units to generate in the SimpleRandomLayer

  • alpha (float, optional (default=0.5)) – Mixing coefficient for distance and dot product input activations: activation = alpha*mlp_activation + (1-alpha)*rbf_width*rbf_activation

  • rbf_width (float, optional (default=1.0)) – multiplier on rbf_activation

  • activation_func ({callable, string} optional (default='sigmoid')) –

    Function used to transform input activation

    It must be one of ‘tanh’, ‘sine’, ‘tribas’, ‘inv_tribase’, ‘sigmoid’, ‘hardlim’, ‘softlim’, ‘gaussian’, ‘multiquadric’, ‘inv_multiquadric’ or a callable. If none is given, ‘tanh’ will be used. If a callable is given, it will be used to compute the hidden unit activations.

  • activation_args (dictionary, optional (default=None)) – Supplies keyword arguments for a callable activation_func

  • user_components (dictionary, optional (default=None)) –

    dictionary containing values for components that woud otherwise be randomly generated. Valid key/value pairs are as follows:

    ’radii’ : array-like of shape [n_hidden] ‘centers’: array-like of shape [n_hidden, n_features] ‘biases’ : array-like of shape [n_hidden] ‘weights’: array-like of shape [n_hidden, n_features]

  • regressor (regressor instance, optional) – (default=sklearn.linear_model.LinearRegression()) Used to perform the regression from hidden unit activations to the outputs and subsequent predictions.

  • random_state (int, RandomState instance or None (default=None)) – Control the pseudo random number generator used to generate the hidden unit weights at fit time.

`genelm_regressor_`

Wrapped object that actually performs the fit.

Type

GenELMRegressor object

Examples

>>> from pyoselm import ELMRegressor
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_samples=100, n_targets=1, n_features=10)
>>> model = ELMRegressor(n_hidden=20,
...                      activation_func="tanh",
...                      random_state=123)
>>> model.fit(X, y)
ELMRegressor(random_state=123)
>>> model.score(X, y)
0.8600650083210614

See also

GenELMRegressor, RandomLayer, MLPRandomLayer

References

1

http://www.extreme-learning-machines.org

2

G.-B. Huang, Q.-Y. Zhu and C.-K. Siew, “Extreme Learning Machine: Theory and Applications”, Neurocomputing, vol. 70, pp. 489-501,

__init__(n_hidden=20, alpha=0.5, rbf_width=1.0, activation_func='sigmoid', activation_args=None, user_components=None, regressor=None, random_state=None)[source]

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__([n_hidden, alpha, rbf_width, …])

Initialize self.

fit(X, y)

Fit the model using X, y as training data.

get_params([deep])

Get parameters for this estimator.

predict(X)

Predict values using the model

score(X, y[, sample_weight])

Return the coefficient of determination \(R^2\) of the prediction.

set_params(**params)

Set the parameters of this estimator.

Attributes

is_fitted

Check if model was fitted

fit(X, y)[source]

Fit the model using X, y as training data.

Parameters
  • X ({array-like, sparse matrix} of shape [n_samples, n_features]) – Training vectors, where n_samples is the number of samples and n_features is the number of features.

  • y (array-like of shape [n_samples, n_outputs]) – Target values (class labels in classification, real numbers in regression)

Returns

self – Returns an instance of self.

Return type

object

get_params(deep=True)

Get parameters for this estimator.

Parameters

deep (bool, default=True) – If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns

params – Parameter names mapped to their values.

Return type

dict

property is_fitted

Check if model was fitted

Returns

Return type

boolean, True if model is fitted

predict(X)[source]

Predict values using the model

Parameters

X ({array-like, sparse matrix} of shape [n_samples, n_features]) –

Returns

C – Predicted values.

Return type

numpy array of shape [n_samples, n_outputs]

score(X, y, sample_weight=None)

Return the coefficient of determination \(R^2\) of the prediction.

The coefficient \(R^2\) is defined as \((1 - \frac{u}{v})\), where \(u\) is the residual sum of squares ((y_true - y_pred) ** 2).sum() and \(v\) is the total sum of squares ((y_true - y_true.mean()) ** 2).sum(). The best possible score is 1.0 and it can be negative (because the model can be arbitrarily worse). A constant model that always predicts the expected value of y, disregarding the input features, would get a \(R^2\) score of 0.0.

Parameters
  • X (array-like of shape (n_samples, n_features)) – Test samples. For some estimators this may be a precomputed kernel matrix or a list of generic objects instead with shape (n_samples, n_samples_fitted), where n_samples_fitted is the number of samples used in the fitting for the estimator.

  • y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – True values for X.

  • sample_weight (array-like of shape (n_samples,), default=None) – Sample weights.

Returns

score\(R^2\) of self.predict(X) wrt. y.

Return type

float

Notes

The \(R^2\) score used when calling score on a regressor uses multioutput='uniform_average' from version 0.23 to keep consistent with default value of r2_score(). This influences the score method of all the multioutput regressors (except for MultiOutputRegressor).

set_params(**params)

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters

**params (dict) – Estimator parameters.

Returns

self – Estimator instance.

Return type

estimator instance