Я пробую простой эксперимент 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])))