Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Dec 10 11:08:24 2019
  4.  
  5. @author: ShardeR
  6. """
  7.  
  8. #Imports  
  9. import pandas as pd
  10. import numpy as np
  11. from sklearn.preprocessing import MinMaxScaler
  12. from sklearn.neural_network import MLPRegressor
  13. from sklearn.model_selection import train_test_split
  14. from pyswarms.utils.plotters import plot_cost_history, plot_contour, plot_surface
  15. import matplotlib.pyplot as plt
  16. import pyswarms as ps
  17. import SwarmPackagePy as sp
  18. from SwarmPackagePy import testFunctions as tf
  19. ##
  20.  
  21.  
  22. ##Tratamento de dados
  23. df = pd.read_csv('aadr.us.txt', names=["Data","Open","High","Low","Close"], usecols=[0,1,2,3,4] , parse_dates=True, index_col=0)
  24.  
  25.  
  26.  
  27. t_train, val_train, t_target, val_target = train_test_split(df, df['Open'] , test_size=0.2 , shuffle=False)
  28.  
  29.  
  30. t_target = np.array(t_target[1:])
  31. val_train =  np.array(val_train[0:(len(val_train)-1)])
  32. t_train = np.array(t_train[0:(len(t_train)-1)])
  33. val_target = np.array(val_target[1:])
  34.  
  35. t_target = np.reshape(t_target,(len(t_target),1))
  36.  
  37. val_target = np.reshape(val_target,(len(val_target),1))
  38.  
  39.  
  40. scaler = MinMaxScaler(feature_range=(0, 1))
  41. t_target = scaler.fit_transform(t_target)
  42. val_train = scaler.fit_transform(val_train)
  43. t_train = scaler.fit_transform(t_train)
  44. val_target = scaler.fit_transform(val_target)
  45. ##
  46.  
  47.  
  48.  
  49. #activation func  --- tanh , identity , logistic , relu
  50. #solver ---- sgd , lbfgs , adam
  51.  
  52. def mlp_regress(hyperparamets):
  53.     model = MLPRegressor(activation = 'logistic', hidden_layer_sizes=(100,),learning_rate_init=(hyperparamets[0]), momentum = (hyperparamets[1]))
  54.     model.fit(t_train, t_target)
  55.     score = model.score(t_train, t_target)
  56.     loss = (1-score)
  57.     print(loss)
  58.     return loss
  59.  
  60. def mlp_regress2(best_sc):
  61.     model = MLPRegressor(activation = 'logistic', hidden_layer_sizes=(100,),learning_rate_init=(best_sc[0]), momentum = (best_sc[1]))
  62.     model.fit(t_train, t_target)
  63.     result = model.predict(val_train)
  64.     score = model.score(t_train, t_target)
  65.     return score, result
  66.  
  67.  
  68. def f(x):
  69.     n_particles = x.shape[0]
  70.     j = [mlp_regress(x[i]) for i in range(n_particles)]
  71.     return np.array(j)
  72.  
  73. #create bounds for hyperparamets
  74.  
  75. #min_bound_lr = 0.02
  76. #max_bound_lr = 0.1
  77. #boundslr = (min_bound_lr,max_bound_lr)
  78.  
  79. # Initialize swarm
  80. #options = {'c1': 0.5 , 'c2': 0.3, 'w':0.9}
  81. # Call instance of PSO
  82. #bounds_lr = (np.array([0.01,0.01]),np.array([0.2,0.2]))
  83. #dimensions = ( 2 )
  84. #optimizer = ps.single.GlobalBestPSO(n_particles=20, dimensions=dimensions, options=options , bounds=bounds_lr)
  85.  
  86. # Perform optimization
  87. #best_cost, pos = optimizer.optimize(f , iters=100)
  88. #swarm visualization
  89. #plot_cost_history(optimizer.cost_history)
  90. #plt.show()
  91.    
  92.  
  93. def f1(x):
  94.     n_particles = x.shape[0]
  95.     for i in [range(n_particles)]:
  96.         valor=x[i]
  97.          
  98.     j = mlp_regress(valor)
  99.     return np.array(j)
  100.  
  101. ##FireWork Algo
  102. alh = sp.fwa(20, f1, 0.1 , 0.8, 2, 5, m1=0.5 , m2=0.3)
  103.  
  104. best_hyp=alh.get_Gbest()
  105.    
  106. print ("best score :",best_hyp)
  107.  
  108. #Plots Resultados
  109. rand_search = np.array([0.1,0,1])
  110. score2, rand_res = mlp_regress2(rand_search)
  111. sc ,res = mlp_regress2(best_hyp)
  112. plt.plot(res, color='c')
  113. plt.plot(rand_res, color='g')
  114. plt.plot(val_target, color='r')
  115. plt.title("Modelo")
  116. plt.ylabel("price normalized")
  117. plt.xlabel("Dias")
  118. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement