首页 > 解决方案 > 分析,预测序列的下一个元素

问题描述

我正在通过翻译进行交流。不要为此发誓太多。我有个问题。如何实现神经网络。分析和预测序列的下一步。不是一个很好的例子。序列:112233112233112233 ......或111211312111211312 ......你可以采取任何序列。但这里是教神经网络预测序列下一步的方法。即使在示例中这样简单的序列中。我有以下代码。但这是一个神经网络。不预测下一步。并重复前面的。如何解决这个问题?

import numpy
import pandas as pd
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
from sklearn.metrics import accuracy_score

# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back):
        dataX, dataY = [], []
        for i in range(len(dataset)-look_back-1):
                xset = []
                for j in range(dataset.shape[1]):
                        a = dataset[i:(i+look_back), j]
                        xset.append(a)
                dataX.append(xset)
                dataY.append(dataset[i + look_back,0])
        return numpy.array(dataX), numpy.array(dataY)

# fix random seed for reproducibility
numpy.random.seed(1)

# load the dataset
file = 'test123456.xlsx'
xl = pd.ExcelFile(file)
dataframe = xl.parse('Sheet1')
dataset = dataframe.values
dataset = dataset.astype('float32')

# normalize the dataset
scaler = MinMaxScaler(feature_range=(0,1))
dataset = scaler.fit_transform(dataset)

# split into train and test sets
train_size = int(len(dataset) * 0.75)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]

# reshape into X=t and Y=t+1
look_back = 1
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)

# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0],1,trainX.shape[1]))
testX = numpy.reshape(testX, (testX.shape[0],1,testX.shape[1]))  
                          
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(8, input_shape=(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='Adam')
model.fit(trainX, trainY, epochs=10000, batch_size=1, verbose=2)

# make predictions
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)

# invert predictions
trainPredict = scaler.inverse_transform(trainPredict)
trainY = scaler.inverse_transform([trainY])
testPredict = scaler.inverse_transform(testPredict)
testY = scaler.inverse_transform([testY])

#
print("X=%s, Predicted=%s" % (testPredict[-1],testX[-1]))
print("X=%s, Predicted=%s" % (testPredict[0],testX[0]))

通过改变这个神经网络的设置。不会改善结果。我将不胜感激任何帮助。PS我正在学习语言。))

那就是问题所在。在任何数据(序列)上,这个神经网络都无法预测下一步。如何定制她来预测下一步。这段代码有什么错误?

标签: pythonmachine-learningkeras

解决方案


推荐阅读