É Um script em pyton que le um arquivo de 1 parametro e faz previsão deste parametro.
Quero que seja 5 ou mais parametros com resultado de previsão para 1 parametro ia rede rnn
aqui está ajustado para 15 parametros. Saida 15 , está com erro o codigo linha 11 e 15 por falta demencionamento
import pandas as pd
base = pd.read_csv('
dados.csv')
#base =
base.dropna()
baseX =
base.iloc[:,0:16].values
baseY =
base.iloc[:,16:31].values
periodos = 30
previsao_futura = 1 # horizonte
X = baseX[0:(len(baseX) - (len(baseX) % periodos))]
X_batches = X.reshape(-1, periodos, 1)
y = baseY[1:(len(baseY) - (len(baseY) % periodos)) + previsao_futura]
y_batches = y.reshape(-1, periodos, 1)
X_teste = baseX[-(periodos + previsao_futura):]
X_teste = X_teste[:periodos]
X_teste = X_teste.reshape(-1, periodos, 1)
y_teste = baseY[-(periodos):]
y_teste = y_teste.reshape(-1, periodos, 1)
import tensorflow as tf
tf.reset_default_graph()
entradas = 16
neuronios_oculta = 100
neuronios_saida = 15
xph = tf.placeholder(tf.float32, [None, periodos, entradas])
yph = tf.placeholder(tf.float32, [None, periodos, neuronios_saida])
#celula =
tf.contrib.rnn.BasicRNNCell(num_units = neuronios_oculta, activation =
tf.nn.relu)
#celula =
tf.contrib.rnn.LSTMCell(num_units = neuronios_oculta, activation =
tf.nn.relu)
# camada saída
#celula =
tf.contrib.rnn.OutputProjectionWrapper(celula, output_size = 1)
def cria_uma_celula():
return
tf.contrib.rnn.LSTMCell(num_units = neuronios_oculta, activation =
tf.nn.sigmoid)
def cria_varias_celulas():
celulas =
tf.nn.rnn_cell.MultiRNNCell([cria_uma_celula() for i in range(4)])
return
tf.contrib.rnn.DropoutWrapper(celulas, output_keep_prob = 0.1)
celula = cria_varias_celulas()
# camada saída
celula =
tf.contrib.rnn.OutputProjectionWrapper(celula, output_size = 15)
saida_rnn, _ =
tf.nn.dynamic_rnn(celula, xph, dtype = tf.float32)
erro =
tf.losses.mean_squared_error(labels = yph, predictions = saida_rnn)
otimizador =
tf.train.AdamOptimizer(learning_rate = 0.001)
treinamento = otimizador.minimize(erro)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoca in range(1000):
_, custo =
sess.run([treinamento, erro], feed_dict = {xph: X_batches, yph: y_batches})
if epoca % 100 == 0:
print(epoca + 1, ' erro: ', custo)
previsoes = sess.r
un(saida_rnn, feed_dict = {xph: X_teste})
Delivery term: Not specified