python - 分析,预测序列的下一个元素
问题描述
我正在通过翻译进行交流。不要为此发誓太多。我有个问题。如何实现神经网络。分析和预测序列的下一步。不是一个很好的例子。序列: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我正在学习语言。))
那就是问题所在。在任何数据(序列)上,这个神经网络都无法预测下一步。如何定制她来预测下一步。这段代码有什么错误?
解决方案
推荐阅读
- python - 在数据之间插入逗号
- java - java.sql.SQLException:tomcat 8.5 上没有合适的驱动程序
- gcloud - 为什么单引号中的参数不能按预期在 Windows 上的 gcloud 中工作?
- java - 使用 Spring Boot 2.0 上传文件期间在套接字上读取意外的 EOF
- python - gameExit 未定义错误
- c++ - _getch 返回额外的空终止符
- haskell - 理解这个任务?
- tensorflow - 如何为 TensorFlow 服务添加基本身份验证
- apache-kafka - Zookeeper 服务器在一段时间后关闭
- r - 循环变量名并堆叠它们