|  | 
| 4 | 4 | # License: Simple BSD | 
| 5 | 5 | 
 | 
| 6 | 6 | """ | 
| 7 |  | -The :mod:`sklearn.neural_networks.elm` module implements the | 
|  | 7 | +The :mod:`elm` module implements the | 
| 8 | 8 | Extreme Learning Machine Classifiers and Regressors (ELMClassifier, | 
| 9 | 9 | ELMRegressor, SimpleELMRegressor, SimpleELMClassifier). | 
| 10 | 10 | 
 | 
|  | 
| 24 | 24 | from abc import ABCMeta, abstractmethod | 
| 25 | 25 | 
 | 
| 26 | 26 | import numpy as np | 
|  | 27 | +from scipy.linalg import pinv2 | 
| 27 | 28 | 
 | 
| 28 | 29 | from sklearn.utils import as_float_array | 
|  | 30 | +from sklearn.utils.extmath import safe_sparse_dot | 
| 29 | 31 | from sklearn.base import BaseEstimator, ClassifierMixin, RegressorMixin | 
| 30 | 32 | from sklearn.preprocessing import LabelBinarizer | 
| 31 |  | -from sklearn.linear_model import LinearRegression | 
| 32 | 33 | 
 | 
| 33 | 34 | from random_hidden_layer import SimpleRandomHiddenLayer | 
| 34 | 35 | 
 | 
| @@ -140,19 +141,17 @@ def __init__(self, | 
| 140 | 141 | 
 | 
| 141 | 142 |         super(ELMRegressor, self).__init__(hidden_layer, regressor) | 
| 142 | 143 | 
 | 
|  | 144 | +        self.coefs_ = None | 
| 143 | 145 |         self.fitted_ = False | 
| 144 | 146 |         self.hidden_activations_ = None | 
| 145 |  | -        self._lin_reg = LinearRegression(copy_X=False, | 
| 146 |  | -                                         normalize=False, | 
| 147 |  | -                                         fit_intercept=False) | 
| 148 | 147 | 
 | 
| 149 | 148 |     def _fit_regression(self, y): | 
| 150 | 149 |         """ | 
| 151 | 150 |         fit regression using internal linear regression | 
| 152 | 151 |         or supplied regressor | 
| 153 | 152 |         """ | 
| 154 | 153 |         if (self.regressor is None): | 
| 155 |  | -            self._lin_reg.fit(self.hidden_activations_, y) | 
|  | 154 | +            self.coefs_ = safe_sparse_dot(pinv2(self.hidden_activations_), y) | 
| 156 | 155 |         else: | 
| 157 | 156 |             self.regressor.fit(self.hidden_activations_, y) | 
| 158 | 157 | 
 | 
| @@ -189,7 +188,7 @@ def fit(self, X, y): | 
| 189 | 188 |     def _get_predictions(self, X): | 
| 190 | 189 |         """get predictions using internal least squares/supplied regressor""" | 
| 191 | 190 |         if (self.regressor is None): | 
| 192 |  | -            preds = self._lin_reg.predict(self.hidden_activations_) | 
|  | 191 | +            preds = safe_sparse_dot(self.hidden_activations_, self.coefs_) | 
| 193 | 192 |         else: | 
| 194 | 193 |             preds = self.regressor.predict(self.hidden_activations_) | 
| 195 | 194 | 
 | 
|  | 
0 commit comments