В вашем коде есть проблема с градиентным спуском. Из вашего метода «makeGuess» я заключаю, что ваша сеть рассчитывает
![equation of forward path](https://i.ibb.co/Km5yM4n/Code-Cogs-Eqn.gif)
with A being the activation function and A(y) being the output of your network to given input vector (x1, x2, x3, ...). As activation function you use a specific step function while you try to use gradient descent as optimization method. The problem is that with a step function it doesn't make any sense to use gradient descent. For more background on this please read: https://stats.stackexchange.com/questions/271701/why-is-step-function-not-used-in-activation-functions-in-machine-learning
В вашем методе «поезд» вы пытаетесь использовать градиентный спуск, который вы используете в неправильный путь, потому что здесь вы игнорируете функцию активации в прямом пути. Подумайте об использовании tanh как о нелинейной активации. Тогда вы получите выходные значения в интервале (-1, 1). Затем вы также можете применить градиентный спуск, если используете его правильно.
Кроме того, вам следует подумать о лучшей инициализации веса. Например, Keras по умолчанию использует инициализацию glorot_uniform, что является отличным вариантом для начала. Может и вы захотите посмотреть в этом топе c. Прямо сейчас вы используете uniform (-1,1), что не лучшая идея.
Если вы сделаете все это, вы можете подумать о масштабировании ваших входных данных. Вы можете использовать MinMaxScaler из пакета sklearn и попробовать разные значения min и max (например, -1 и 1) и посмотреть, где вы получите наилучшие результаты.