In general a MLP should be capable for theyour task, but when using a neural netnets there are several thingthings one should bear in mind:
there are no strict rules for adjusting the hyperparameters and the whole network structure (deep andsand width) because it is strongly problem dependent
therefore, fiddeling with the hyperparameters is important (you could use search algorithm instead of guessing)
due to random initialization of the network's weights, it is worseworth to start the training multiple times to avoid unfavorable initializations
I could archiveachieve much better results with only a few manual tries by using the deep learning library Keras:
The main problem with the implementation of scikit-learn's MLP is the tol
parameter, which prevents the solvers sgd
and adam
from training further. SimilarlySimilar, the solver lbfgs
stops quite early.
As one can see from the Keras loss plot, there is a plateau before the 'main learning' begins:
Furthermore you should be aware of the difference between interpolation and regression, because they address different problems. Thus SciPy griddata
won't be a good choice for noisy data: How is interpolation related to the concept of regression?
My modified version of the notebook.