# Eugene
# https://www.mql5.com

import numpy as np
import time
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.neural_network import MLPRegressor

# your path to data
df = pd.read_csv(
    r"C:\Users\Evgeniy\AppData\Local\Programs\Python\Python39\Data.csv", delimiter=";"
)
X = df.to_numpy()
df1 = pd.read_csv(r"C:\Users\Evgeniy\AppData\Local\Programs\Python\Python39\Target.csv")
y = df1.to_numpy()
y = y.reshape(-1)

start = time.time()

"""
clf = MLPRegressor(solver='sgd', alpha=0.0, 
                    hidden_layer_sizes=(20),
                    activation='tanh',
                    max_iter=700,batch_size=10,
                    learning_rate_init=0.01,momentum=0.9,
                    shuffle = False,n_iter_no_change = 2000, tol = 0.000001)
"""

"""
clf = MLPRegressor(solver='adam', alpha=0.0, 
                    hidden_layer_sizes=(20),
                    activation='tanh',
                    max_iter=3000,batch_size=100,                                    
                    learning_rate_init=0.01,
                    n_iter_no_change = 2000, tol = 0.000001)
"""

#'''
clf = MLPRegressor(
    solver="lbfgs",
    alpha=0.0,
    hidden_layer_sizes=(100),
    activation="tanh",
    max_iter=300,
    tol=0.000001,
)
#'''

clf.fit(X, y)
end = time.time() - start  # training time

print("learning time  =", end * 1000)
print("solver = ", clf.solver)
print("loss = ", clf.loss_ * 2)
print("iter = ", clf.n_iter_)
# print("n_layers_ = ",clf.n_layers_)
# print("n_outputs_ = ",clf.n_outputs_)
# print("out_activation_ = ",clf.out_activation_)

coef = clf.coefs_
# print("coefs_ = ",coef)
inter = clf.intercepts_
# print("intercepts_ = ",inter)
plt.plot(np.log(pd.DataFrame(clf.loss_curve_)))
plt.title(clf.solver)
plt.xlabel("Epochs")
plt.ylabel("Loss")
plt.show()
