我正在尝试预测数据集序列中的下一组数字,但是使用predict函数对整个数据集进行分类,如何更改代码以预测序列中的下一个结果?
我正在遵循本教程,他的模型基于50,60,70输出80作为他的数据集。我的只是预测整个数据集吗? How to Get Started with Deep Learning for Time Series Forecasting (7-Day Mini-Course)
这是我的数据集
这是代码:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import classification_report,confusion_matrix
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
# load the dataset
col_names = ['N1', 'N2', 'N3', 'N4', 'N5', 'L1', 'L2','label']
# load dataset
pima = pd.read_csv("dataset.csv", header=None, names=col_names)
pima.head()
feature_cols = ['N1', 'N2', 'N3', 'N4', 'N5', 'L1', 'L2']
X = pima[feature_cols] # Features
y = pima.label
model = Sequential()
model.add(Dense(122, input_dim=7, activation='relu'))
model.add(Dense(20, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, y, epochs=2000, batch_size=10)
# =======================
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))
yhat = model.predict(X, verbose=0)
print(yhat) <- this outputs the predictions for the entire dataset and not the next prediction
编辑:
对于整个数据集,我得到的输出就是这个。
数据集从1到1251行,我想用输出N1,N2,N3,N4,N5,L1,L2来预测行1252。
答案 0 :(得分:0)
您将S型激活作为最后一层,这将提供范围为[-1,1]的输出,这并不是您在预测下一个数字时想要的最后一层。
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
尝试将其更改为
model.add(Dense(1))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
此外,最好将MSE损失功能用于此类任务,BCE则用于分类任务,您可以在此处进行检查
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
希望这可以解决您的问题