Skip to content
This repository was archived by the owner on Mar 6, 2021. It is now read-only.

Commit e32e7f4

Browse files
committed
changed *RandomHiddenLayer to *RandomLayer, modified modules, demo and README to fit
tweaked demo notebook changed to a more reasonable version number in the README
1 parent 0090ef9 commit e32e7f4

File tree

4 files changed

+78
-80
lines changed

4 files changed

+78
-80
lines changed

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ Python-ELM
22
==========
33

44
Extreme Learning Machine implementation in Python
5-
Version 1.0
5+
Version 0.2
66

77
This is an implementation of the Extreme Learning Machine in python,
88
based on the scikit-learn machine learning library.
99

1010
Distance and dot product based hidden layers are provided via the
11-
RBFRandomHiddenLayer and SimpleRandomHiddenLayer classes respectively.
11+
RBFRandomLayer and SimpleRandomLayer classes respectively.
1212

13-
The SimpleRandomHiddenLayer provides the following activation functions:
13+
The SimpleRandomLayer provides the following activation functions:
1414

1515
tanh, sine, tribas, sigmoid, hardlim
1616

17-
The RBFRandomHiddenLayer provides the following activation functions:
17+
The RBFRandomLayer provides the following activation functions:
1818

1919
gaussian, multiquadric and polyharmonic spline ('poly_spline')
2020

elm.py

+23-23
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from sklearn.base import BaseEstimator, ClassifierMixin, RegressorMixin
3232
from sklearn.preprocessing import LabelBinarizer
3333

34-
from random_hidden_layer import SimpleRandomHiddenLayer
34+
from random_layer import SimpleRandomLayer
3535

3636
__all__ = ["ELMRegressor",
3737
"ELMClassifier",
@@ -104,7 +104,7 @@ class ELMRegressor(BaseELM, RegressorMixin):
104104
Parameters
105105
----------
106106
`hidden_layer` : random_hidden_layer instance, optional
107-
(default=SimpleRandomHiddenLayer(random_state=0))
107+
(default=SimpleRandomLayer(random_state=0))
108108
109109
`regressor` : regressor instance, optional (default=None)
110110
If provided, this object is used to perform the regression from hidden
@@ -124,7 +124,7 @@ class ELMRegressor(BaseELM, RegressorMixin):
124124
125125
See Also
126126
--------
127-
RBFRandomHiddenLayer, SimpleRandomHiddenLayer, ELMRegressor, ELMClassifier
127+
RBFRandomLayer, SimpleRandomLayer, ELMRegressor, ELMClassifier
128128
SimpleELMRegressor, SimpleELMClassifier
129129
130130
References
@@ -136,7 +136,7 @@ class ELMRegressor(BaseELM, RegressorMixin):
136136
"""
137137

138138
def __init__(self,
139-
hidden_layer=SimpleRandomHiddenLayer(random_state=0),
139+
hidden_layer=SimpleRandomLayer(random_state=0),
140140
regressor=None):
141141

142142
super(ELMRegressor, self).__init__(hidden_layer, regressor)
@@ -231,7 +231,7 @@ class ELMClassifier(BaseELM, ClassifierMixin):
231231
Parameters
232232
----------
233233
`hidden_layer` : random_hidden_layer instance, optional
234-
(default=SimpleRandomHiddenLayer(random_state=0))
234+
(default=SimpleRandomLayer(random_state=0))
235235
236236
`regressor` : regressor instance, optional (default=None)
237237
If provided, this object is used to perform the regression from hidden
@@ -251,7 +251,7 @@ class ELMClassifier(BaseELM, ClassifierMixin):
251251
252252
See Also
253253
--------
254-
RBFRandomHiddenLayer, SimpleRandomHiddenLayer, ELMRegressor, ELMClassifier
254+
RBFRandomLayer, SimpleRandomLayer, ELMRegressor, ELMClassifier
255255
SimpleELMRegressor, SimpleELMClassifier
256256
257257
References
@@ -262,7 +262,7 @@ class ELMClassifier(BaseELM, ClassifierMixin):
262262
2006.
263263
"""
264264
def __init__(self,
265-
hidden_layer=SimpleRandomHiddenLayer(random_state=0),
265+
hidden_layer=SimpleRandomLayer(random_state=0),
266266
regressor=None):
267267

268268
super(ELMClassifier, self).__init__(hidden_layer, regressor)
@@ -333,7 +333,7 @@ def predict(self, X):
333333
return class_predictions
334334

335335

336-
# ELMRegressor with default SimpleRandomHiddenLayer
336+
# ELMRegressor with default SimpleRandomLayer
337337
class SimpleELMRegressor(BaseEstimator, RegressorMixin):
338338
"""
339339
SimpleELMRegressor is a regressor based on the Extreme Learning Machine.
@@ -344,13 +344,13 @@ class SimpleELMRegressor(BaseEstimator, RegressorMixin):
344344
[1][2]
345345
346346
SimpleELMRegressor is a wrapper for an ELMRegressor that uses a
347-
SimpleRandomHiddenLayer and passes the __init__ parameters through
347+
SimpleRandomLayer and passes the __init__ parameters through
348348
to the hidden layer generated by the fit() method.
349349
350350
Parameters
351351
----------
352352
`n_hidden` : int, optional (default=20)
353-
Number of units to generate in the SimpleRandomHiddenLayer
353+
Number of units to generate in the SimpleRandomLayer
354354
355355
`activation_func` : {callable, string} optional (default='tanh')
356356
Function used to transform input activation
@@ -372,7 +372,7 @@ class SimpleELMRegressor(BaseEstimator, RegressorMixin):
372372
373373
See Also
374374
--------
375-
RBFRandomHiddenLayer, SimpleRandomHiddenLayer, ELMRegressor, ELMClassifier
375+
RBFRandomLayer, SimpleRandomLayer, ELMRegressor, ELMClassifier
376376
SimpleELMRegressor, SimpleELMClassifier
377377
378378
References
@@ -414,10 +414,10 @@ def fit(self, X, y):
414414
415415
Returns an instance of self.
416416
"""
417-
rhl = SimpleRandomHiddenLayer(n_hidden=self.n_hidden,
418-
activation_func=self.activation_func,
419-
activation_args=self.activation_args,
420-
random_state=self.random_state)
417+
rhl = SimpleRandomLayer(n_hidden=self.n_hidden,
418+
activation_func=self.activation_func,
419+
activation_args=self.activation_args,
420+
random_state=self.random_state)
421421

422422
self.elm_regressor_ = ELMRegressor(hidden_layer=rhl)
423423
self.elm_regressor_.fit(X, y)
@@ -442,7 +442,7 @@ def predict(self, X):
442442
return self.elm_regressor_.predict(X)
443443

444444

445-
# ELMClassifier with default SimpleRandomHiddenLayer
445+
# ELMClassifier with default SimpleRandomLayer
446446
class SimpleELMClassifier(BaseEstimator, ClassifierMixin):
447447
"""
448448
SimpleELMClassifier is a classifier based on the Extreme Learning Machine.
@@ -453,13 +453,13 @@ class SimpleELMClassifier(BaseEstimator, ClassifierMixin):
453453
[1][2]
454454
455455
SimpleELMClassifier is a wrapper for an ELMClassifier that uses a
456-
SimpleRandomHiddenLayer and passes the __init__ parameters through
456+
SimpleRandomLayer and passes the __init__ parameters through
457457
to the hidden layer generated by the fit() method.
458458
459459
Parameters
460460
----------
461461
`n_hidden` : int, optional (default=20)
462-
Number of units to generate in the SimpleRandomHiddenLayer
462+
Number of units to generate in the SimpleRandomLayer
463463
464464
`activation_func` : {callable, string} optional (default='tanh')
465465
Function used to transform input activation
@@ -484,7 +484,7 @@ class SimpleELMClassifier(BaseEstimator, ClassifierMixin):
484484
485485
See Also
486486
--------
487-
RBFRandomHiddenLayer, SimpleRandomHiddenLayer, ELMRegressor, ELMClassifier
487+
RBFRandomLayer, SimpleRandomLayer, ELMRegressor, ELMClassifier
488488
SimpleELMRegressor, SimpleELMClassifier
489489
490490
References
@@ -547,10 +547,10 @@ def fit(self, X, y):
547547
548548
Returns an instance of self.
549549
"""
550-
rhl = SimpleRandomHiddenLayer(n_hidden=self.n_hidden,
551-
activation_func=self.activation_func,
552-
activation_args=self.activation_args,
553-
random_state=self.random_state)
550+
rhl = SimpleRandomLayer(n_hidden=self.n_hidden,
551+
activation_func=self.activation_func,
552+
activation_args=self.activation_args,
553+
random_state=self.random_state)
554554

555555
self.elm_classifier_ = ELMClassifier(hidden_layer=rhl)
556556
self.elm_classifier_.fit(X, y)

elm_notebook.py

+36-38
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from time import time
1515
from sklearn.cluster import k_means
1616
from elm import ELMClassifier, ELMRegressor, SimpleELMClassifier, SimpleELMRegressor
17-
from random_hidden_layer import SimpleRandomHiddenLayer, RBFRandomHiddenLayer
17+
from random_layer import SimpleRandomLayer, RBFRandomLayer
1818

1919
# <codecell>
2020

@@ -64,11 +64,10 @@ def res_dist(x, y, e, n_runs=100, random_state=None):
6464
dgx_train, dgx_test, dgy_train, dgy_test = train_test_split(dgx, dgy, test_size=0.2)
6565

6666
diabetes = load_diabetes()
67-
#dbx, dby = stdsc.fit_transform(diabetes.data), stdsc.fit_transform(diabetes.target)
6867
dbx, dby = stdsc.fit_transform(diabetes.data), diabetes.target
6968
dbx_train, dbx_test, dby_train, dby_test = train_test_split(dbx, dby, test_size=0.2)
7069

71-
mrx, mry = make_regression(n_samples=2000)
70+
mrx, mry = make_regression(n_samples=2000, n_targets=2)
7271
mrx_train, mrx_test, mry_train, mry_test = train_test_split(mrx, mry, test_size=0.2)
7372

7473
xtoy, ytoy = make_toy()
@@ -78,50 +77,63 @@ def res_dist(x, y, e, n_runs=100, random_state=None):
7877

7978
# <codecell>
8079

80+
# SimpleELMClassifier test
81+
elmc = SimpleELMClassifier(n_hidden=500)
82+
elmc.fit(dgx_train, dgy_train)
83+
print elmc.score(dgx_train, dgy_train), elmc.score(dgx_test, dgy_test)
84+
85+
# <codecell>
86+
87+
# SimpleELMRegressor test
88+
elmr = SimpleELMRegressor()
89+
elmr.fit(xtoy_train, ytoy_train)
90+
print elmr.score(xtoy_train, ytoy_train), elmr.score(xtoy_test, ytoy_test)
91+
plot(xtoy, ytoy, xtoy, elmr.predict(xtoy))
92+
93+
# <codecell>
94+
8195
# RBF tests
82-
elmc = ELMClassifier(RBFRandomHiddenLayer(activation_func='gaussian'))
96+
elmc = ELMClassifier(RBFRandomLayer(activation_func='gaussian'))
8397
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
8498

85-
elmc = ELMClassifier(RBFRandomHiddenLayer(activation_func='poly_spline', gamma=2))
99+
elmc = ELMClassifier(RBFRandomLayer(activation_func='poly_spline', gamma=2))
86100
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
87101

88-
elmc = ELMClassifier(RBFRandomHiddenLayer(activation_func='multiquadric'))
102+
elmc = ELMClassifier(RBFRandomLayer(activation_func='multiquadric'))
89103
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
90104

91105
# Simple tests
92-
elmc = ELMClassifier(SimpleRandomHiddenLayer(activation_func='sine'))
106+
elmc = ELMClassifier(SimpleRandomLayer(activation_func='sine'))
93107
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
94108

95-
elmc = ELMClassifier(SimpleRandomHiddenLayer(activation_func='tanh'))
109+
elmc = ELMClassifier(SimpleRandomLayer(activation_func='tanh'))
96110
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
97111

98-
elmc = ELMClassifier(SimpleRandomHiddenLayer(activation_func='tribas'))
112+
elmc = ELMClassifier(SimpleRandomLayer(activation_func='tribas'))
99113
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
100114

101-
elmc = ELMClassifier(SimpleRandomHiddenLayer(activation_func='sigmoid'))
115+
elmc = ELMClassifier(SimpleRandomLayer(activation_func='sigmoid'))
102116
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
103117

104-
elmc = ELMClassifier(SimpleRandomHiddenLayer(activation_func='hardlim'))
118+
elmc = ELMClassifier(SimpleRandomLayer(activation_func='hardlim'))
105119
tr,ts = res_dist(irx, iry, elmc, n_runs=100, random_state=0)
106120

107121
# <codecell>
108122

109-
hardlim = (lambda a: np.array(a > 0.0, dtype=float))
110-
tribas = (lambda a: np.clip(1.0 - np.fabs(a), 0.0, 1.0))
111-
elmr = ELMRegressor(SimpleRandomHiddenLayer(random_state=0, activation_func=tribas))
123+
elmr = ELMRegressor(SimpleRandomLayer(random_state=0, activation_func='tribas'))
112124
elmr.fit(xtoy_train, ytoy_train)
113125
print elmr.score(xtoy_train, ytoy_train), elmr.score(xtoy_test, ytoy_test)
114126
plot(xtoy, ytoy, xtoy, elmr.predict(xtoy))
115127

116128
# <codecell>
117129

118-
rhl = SimpleRandomHiddenLayer(n_hidden=200)
130+
rhl = SimpleRandomLayer(n_hidden=200)
119131
elmr = ELMRegressor(hidden_layer=rhl)
120132
tr, ts = res_dist(mrx, mry, elmr, n_runs=20, random_state=0)
121133

122134
# <codecell>
123135

124-
rhl = RBFRandomHiddenLayer(n_hidden=15, gamma=0.25)
136+
rhl = RBFRandomLayer(n_hidden=15, gamma=0.25)
125137
elmr = ELMRegressor(hidden_layer=rhl)
126138
elmr.fit(xtoy_train, ytoy_train)
127139
print elmr.score(xtoy_train, ytoy_train), elmr.score(xtoy_test, ytoy_test)
@@ -132,33 +144,33 @@ def res_dist(x, y, e, n_runs=100, random_state=None):
132144
nh = 10
133145
(ctrs, _, _) = k_means(xtoy_train, nh)
134146
unit_rs = np.ones(nh)
135-
rhl = RBFRandomHiddenLayer(n_hidden=nh, activation_func='poly_spline', gamma=3)
136-
#rhl = RBFRandomHiddenLayer(n_hidden=nh, activation_func='multiquadric', gamma=1)
137-
#rhl = RBFRandomHiddenLayer(n_hidden=nh, centers=ctrs, radii=unit_rs, gamma=4)
147+
#rhl = RBFRandomLayer(n_hidden=nh, activation_func='poly_spline', gamma=3)
148+
#rhl = RBFRandomLayer(n_hidden=nh, activation_func='multiquadric', gamma=1)
149+
rhl = RBFRandomLayer(n_hidden=nh, centers=ctrs, radii=unit_rs)
138150
elmr = ELMRegressor(hidden_layer=rhl)
139151
elmr.fit(xtoy_train, ytoy_train)
140152
print elmr.score(xtoy_train, ytoy_train), elmr.score(xtoy_test, ytoy_test)
141153
plot(xtoy, ytoy, xtoy, elmr.predict(xtoy))
142154

143155
# <codecell>
144156

145-
rbf_rhl = RBFRandomHiddenLayer(n_hidden=100, random_state=0, gamma=0.1)
157+
rbf_rhl = RBFRandomLayer(n_hidden=100, random_state=0, gamma=0.1)
146158
elmc_rbf = ELMClassifier(hidden_layer=rbf_rhl)
147159
elmc_rbf.fit(dgx_train, dgy_train)
148160
print elmc_rbf.score(dgx_train, dgy_train), elmc_rbf.score(dgx_test, dgy_test)
149161

150162
def powtanh_xfer(activations, power=1.0):
151163
return pow(np.tanh(activations), power)
152164

153-
#tanh_rhl = SimpleRandomHiddenLayer(n_hidden=5000, random_state=0)
154-
tanh_rhl = SimpleRandomHiddenLayer(n_hidden=5000, activation_func=powtanh_xfer, activation_args={'power':2.0})
165+
#tanh_rhl = SimpleRandomLayer(n_hidden=5000, random_state=0)
166+
tanh_rhl = SimpleRandomLayer(n_hidden=5000, activation_func=powtanh_xfer, activation_args={'power':2.0})
155167
elmc_tanh = ELMClassifier(hidden_layer=tanh_rhl)
156168
elmc_tanh.fit(dgx_train, dgy_train)
157169
print elmc_tanh.score(dgx_train, dgy_train), elmc_tanh.score(dgx_test, dgy_test)
158170

159171
# <codecell>
160172

161-
rbf_rhl = RBFRandomHiddenLayer(n_hidden=100, gamma=0.1)
173+
rbf_rhl = RBFRandomLayer(n_hidden=100, gamma=0.1)
162174
tr, ts = res_dist(dgx, dgy, ELMClassifier(hidden_layer=rbf_rhl), n_runs=100, random_state=0)
163175

164176
# <codecell>
@@ -168,13 +180,12 @@ def powtanh_xfer(activations, power=1.0):
168180

169181
# <codecell>
170182

171-
from sklearn.svm import SVR
172183
from sklearn.ensemble import RandomForestRegressor
173184
tr, ts = res_dist(dbx, dby, RandomForestRegressor(n_estimators=15), n_runs=100, random_state=0)
174185
hist(tr), hist(ts)
175186
print
176187

177-
rhl = RBFRandomHiddenLayer(n_hidden=15, gamma=0.01)
188+
rhl = RBFRandomLayer(n_hidden=15, gamma=0.01)
178189
tr,ts = res_dist(dbx, dby, ELMRegressor(rhl), n_runs=100, random_state=0)
179190
hist(tr), hist(ts)
180191
print
@@ -192,19 +203,6 @@ def powtanh_xfer(activations, power=1.0):
192203

193204
# <codecell>
194205

195-
elmc = SimpleELMClassifier(n_hidden=500, activation_func='hardlim')
196-
elmc.fit(dgx_train, dgy_train)
197-
print elmc.score(dgx_train, dgy_train), elmc.score(dgx_test, dgy_test)
198-
199-
# <codecell>
200-
201-
elmr = SimpleELMRegressor()
202-
elmr.fit(xtoy_train, ytoy_train)
203-
print elmr.score(xtoy_train, ytoy_train), elmr.score(xtoy_test, ytoy_test)
204-
plot(xtoy, ytoy, xtoy, elmr.predict(xtoy))
205-
206-
# <codecell>
207-
208206
elmr = SimpleELMRegressor(activation_func='tribas')
209207
elmr.fit(xtoy_train, ytoy_train)
210208
print elmr.score(xtoy_train, ytoy_train), elmr.score(xtoy_test, ytoy_test)

0 commit comments

Comments
 (0)