首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用神经网络预测python的时间序列数据

用神经网络预测python的时间序列数据
EN

Stack Overflow用户
提问于 2017-08-02 01:26:10
回答 1查看 2.1K关注 0票数 1

我是神经网络的初学者,我试图用python中的5个输入来预测温度值(输出)。我在python中使用了keras包来工作神经网络。

同时,利用前馈神经网络(回归)和递归神经网络(LSTM)两种算法对预测值进行了预测。然而,这两种算法都不能很好地用于预测。

在我的前馈神经网络(回归)中,我使用了三个隐藏层(包含100个、200个、300个神经元),如下所示,

代码语言:javascript
运行
复制
def baseline_model():
    # create model
    model = Sequential()
    model.add(Dense(100, input_dim=5, kernel_initializer='normal', activation='sigmoid'))
    model.add(Dense(200, kernel_initializer = 'normal', activation='sigmoid'))
    model.add(Dense(300, kernel_initializer = 'normal', activation='sigmoid'))
    model.add(Dense(1, kernel_initializer='normal'))
    # Compile model
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model


df = DataFrame({'Time': TIME_list, 'input1': input1_list, 'input2': input2_list, 'input3': input3_list, 'input4': input4_list, 'input5': input5_list, 'output': output_list})
df.index = pd.to_datetime(df.Time)
df = df.values

#Setting training data and test data
train_size_x = int(len(df)*0.8)     #The user can change the range of training data
print(train_size_x)
X_train = df[0:train_size_x, 0:5]
t_train = df[0:train_size_x, 6]
X_test = df[train_size_x:int(len(df)), 0:5]
t_test = df[train_size_x:int(len(df)), 6]

# fix random seed for reproducibility
seed = 7
np.random.seed(seed)

scale = StandardScaler()
X_train = scale.fit_transform(X_train)
X_test = scale.transform(X_test)

#Regression in Keras package
clf = KerasRegressor(build_fn=baseline_model, nb_epoch=50, batch_size=5, verbose=0)

clf.fit(X_train,t_train)
res = clf.predict(X_test)

然而,这个错误是相当大的。最大绝对误差为78.4834。所以我试图通过改变隐藏层中的隐层或神经元的数目来最小化这个错误,但是误差保持在相同的范围内。

在前馈神经网络的基础上,采用了递归神经网络(LSTM)算法,该算法只需输入一个输入就可以进行预测。在我的例子中,输入是温度。它给我的误差比前馈神经网络小得多,但我深深地认为,我所实现的递归Network(LSTM)在我的情况下并不模糊,因为它不使用影响输出(温度值)的5个输入,例如我实现的前馈回归。

现在我迷失了我应该使用的其他算法。

对我的案子有什么建议或想法吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 01:54:40

我必须同意大家对你的问题的评论,你有点超前了。神经网络有时看起来像是黑魔法,值得花些时间来了解引擎盖下到底发生了什么。一个开始学习和实验的好地方是滑雪。Sklearn是一个很好的起点,因为您可以轻松地尝试不同的技术,这将帮助您快速学习如何构建您的问题。也有丰富的信息和教程。

从那里开始,你将有更好的装备从零开始处理你自己的神经网络。此外,sklearn还具有许多有用的功能,可以对培训数据进行预处理/规范化,这本身就是一门整体艺术。

在共同的情况下,已经有大量的良好网络可用。大部分的工作是为您的问题选择合适的结构,获取好的数据以供培训,并对这些数据进行按摩,以便适当地利用这些数据。

看看它..。http://scikit-learn.org/stable/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45450015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档