Skip to content

Commit 7349c6f

Browse files
committed
Random depth NN
1 parent 738f424 commit 7349c6f

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

src/activities/stock_prediction/stock_arena.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
if __name__ == '__main__':
66

7-
arena = MachineLearningArena(model_pool=[NeuralNetworkPredictor], activity=FrankfurtStockPrediction)
7+
arena = MachineLearningArena(model_pool=[ShallowNeuralNetworkPredictor], activity=FrankfurtStockPrediction)
88
printer = pprint.PrettyPrinter()
99
for _ in range(10):
1010
arena.auto_compete()

src/activities/stock_prediction/stock_prediction_models.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import numpy as np
33
from keras import Sequential
44
from keras.layers import Dense, Activation
5+
from random import randint
56

67

78
class RandomRangePredictor(FrankfurtStockPrediction.Model):
@@ -60,7 +61,7 @@ def description():
6061
return '''Predicts that every stock will have the same mean price at every time interval.'''
6162

6263

63-
class NeuralNetworkPredictor(FrankfurtStockPrediction.Model):
64+
class ShallowNeuralNetworkPredictor(FrankfurtStockPrediction.Model):
6465

6566
def __init__(self, activity):
6667
super().__init__(activity)
@@ -81,4 +82,27 @@ def predict(self, x):
8182

8283
@staticmethod
8384
def description():
84-
return '''Creates a random neural network.'''
85+
return '''Uses a shallow, wide neural network.'''
86+
87+
88+
class RandomDepthNeuralNetworkPredictor(FrankfurtStockPrediction.Model):
89+
90+
def __init__(self, activity):
91+
super().__init__(activity)
92+
self.neural_network = Sequential([Dense(8, input_shape=(self.x_shape[1],))] +
93+
[Dense(8) for _ in range(randint(0, 8))] +
94+
[Dense(self.y_shape[1])])
95+
self.neural_network.compile(
96+
optimizer='nadam',
97+
loss='mse'
98+
)
99+
100+
def train(self, x, y):
101+
self.neural_network.fit(x=x, y=y)
102+
103+
def predict(self, x):
104+
return self.neural_network.predict(x)
105+
106+
@staticmethod
107+
def description():
108+
return '''Creates a neural network of depth from 2-10.'''

src/server/server.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
}
2424

2525
activities_to_models = {
26-
FrankfurtStockPrediction: [RandomRangePredictor, MeanPredictor, MeanRowPredictor, NeuralNetworkPredictor]
26+
FrankfurtStockPrediction: [RandomRangePredictor, MeanPredictor, MeanRowPredictor, ShallowNeuralNetworkPredictor,
27+
RandomDepthNeuralNetworkPredictor]
2728
}
2829

2930
model_names = {
3031
RandomRangePredictor: 'Random Range Model',
3132
MeanPredictor: 'Mean Model',
3233
MeanRowPredictor: 'Mean Row Model',
33-
NeuralNetworkPredictor: 'Neural Network Model'
34+
ShallowNeuralNetworkPredictor: 'Shallow Neural Network',
35+
RandomDepthNeuralNetworkPredictor: 'Random Depth Neural Network'
3436
}
3537

3638
# endregion

0 commit comments

Comments
 (0)