LSTM ValueError: невозможно изменить размер массива для тестовых данных - PullRequest
0 голосов
/ 14 января 2019

Я пробую простой эксперимент LSTM. В основном цель состоит в том, чтобы предсказать заключительную стадию как значение предсказания. Вот взгляд на мои данные.

 Pressure  Temperature      time (hr)  time (min)  strain value
0          7000              823   0.035442     2.12651             0.000681   
1          7000              823   0.051088     3.06527             0.000786   
2          7000              823   0.079250     4.75503             0.000915   

   final stage  
0            1  
1            1  
2            1 

Таким образом, в основном я сначала читаю данные из Excel, а затем я делаю графики для каждой переменной, и мне нужно предсказать заключительный этап, состоящий из 4 different values(1,2,3 or 4).

Я пробовал следующие коды, как показано ниже, но я продолжаю получать ошибку здесь ошибка указывает на эту строку X_tr_t = X_train.reshape(30,1, X_train.shape[1])

ValueError: cannot reshape array of size 174 into shape (30,1,6)

Всего моих строк данных 50, исключая заголовок вверху. Так что я не знаю, почему он продолжает показывать 174, когда данные должны быть 30 * 6 = 180?

import numpy as np
from pandas import read_excel, DataFrame, concat
from matplotlib import pyplot
from sklearn.preprocessing import MinMaxScaler
from keras import optimizers
from keras.models import Sequential
from keras.layers import LSTM, Dense, Activation
from keras.callbacks import EarlyStopping

# Loading the raw dataset 
dataset = read_excel("set1Excel.xlsx", usecols="A:F")

values = dataset.values

print(dataset.head(3)) # Lets print the first 3 rows of the dataset to take a peek at what we have

Nc = values.shape[1] # number of columns

values = values.astype('float32') # ensuring all the data is float

i = 0
pyplot.figure()
for group in range(0,Nc):
    i += 1
    pyplot.subplot(Nc, 1, i)
    pyplot.plot(values[:, group])
    pyplot.title(dataset.columns[group], y=0.5, loc='right')
pyplot.show()

n_train = int( values.shape[0] * 0.60)
balance = int( values.shape[0] * 0.40)

#print("N train: %d" % X_train.shape[1])
print("n_train: %d" % n_train)
print("balance: %d" % balance)
# inputs
train_X = values[:n_train, :]
test_X  = values[balance:, :]

sc = MinMaxScaler()
train_sc = sc.fit_transform(train_X)
test_sc = sc.transform(test_X)

X_train = train_sc[:-1]
y_train = train_sc[6]

X_test = test_sc[:-1]
y_test = test_sc[6]


#print("X train shape".X_train.shape[0])
X_tr_t = X_train.reshape(30,1, X_train.shape[1])
X_tst_t = X_test.reshape(20, 1, X_test.shape[1])

from keras.layers import LSTM

model_lstm = Sequential()
#model_lstm.add(LSTM(7, input_shape=(1, ), activation='relu', kernel_initializer='lecun_uniform', return_sequences=False))
#model_lstm.add(Dense(1))
#model_lstm.compile(loss='mean_squared_error', optimizer='adam')
#early_stop = EarlyStopping(monitor='loss', patience=5, verbose=1)
#history_model_lstm = model_lstm.fit(X_tr_t, y_train, epochs=200, batch_size=1, verbose=1, shuffle=False, callbacks=[early_stop])

#y_pred_test_lstm = model_lstm.predict(X_tst_t)
#y_train_pred_lstm = model_lstm.predict(X_tr_t)
#print("The R2 score on the Train set is:\t{:0.3f}".format(r2_score(y_train, y_train_pred_lstm)))
#r2_train = r2_score(y_train, y_train_pred_lstm)
#print("The Adjusted R2 score on the Train set is:\t{:0.3f}\n".format(adj_r2_score(r2_train, X_train.shape[0], X_train.shape[1])))
#print("The R2 score on the Test set is:\t{:0.3f}".format(r2_score(y_test, y_pred_test_lstm)))
#r2_test = r2_score(y_test, y_pred_test_lstm)
#print("The Adjusted R2 score on the Test set is:\t{:0.3f}".format(adj_r2_score(r2_test, X_test.shape[0], X_test.shape[1])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...