简介:
本文将讨论如何使用TensorFlow和Keras训练并评估LSTM模型来预测未来的价格变动。我们将使用历史汇率数据来进行这项预测,这可用于制定交易策略。
瑞典语翻译中的源文本、初始翻译和专家建议分别用XML标签<SOURCE_TEXT></SOURCE_TEXT>、<TRANSLATION></TRANSLATION>和<EXPERT_SUGGESTIONS></EXPERT_SUGGESTIONS>界定如下: 瑞典语翻译 瑞典语翻译中,根据专家建议,调整后的翻译为: 用外汇数据训练LSTM模型 加载并处理一下外汇市场数据 导入 numpy as np
导入 pandas as pd
从 sklearn.preprocessing 导入 MinMaxScaler
# 加载外汇数据,我们从这个URL开始
url = "https://fred.stlouisfed.org/graph/fredgraph.csv?bgcolor=%23e1e9f0&chart_type=line&drp=0&fo=open%20sans&graph_bgcolor=%23ffffff&height=450&mode=fred&recession_bars=off&txtcolor=%23444444&ts=12&tts=12&width=1168&nt=0&thu=0&trc=0&show_legend=yes&show_axis_titles=yes&show_tooltip=yes&id=DTWEXB&scale=left&cosd=1999-01-04&coed=2021-09-10&line_color=%234572a7&link_values=false&line_style=solid&mark_type=none&mw=3&lw=2&ost=-99999&oet=99999&mma=0&fml=a&fq=Daily&fam=avg&fgst=lin&fgsnd=2020-02-01&line_index=1&transformation=lin&vintage_date=2021-09-16&revision_date=2021-09-16&nd=1971-01-04"
data = pd.read_csv(url, index_col='DATE', parse_dates=True)
data = data.dropna()
# 删除包含 '.' 的行并将该列的数据类型转换为浮点数
data = data[data.DTWEXB != '.']
data['DTWEXB'] = data['DTWEXB'].astype(float)
# 接下来,我们将使用MinMaxScaler来标准化数据
scaler = MinMaxScaler()
data_scaled = scaler.fit_transform(data)
# 创建滞后变量
X = data_scaled[:-1]
y = data_scaled[1:]
# 接下来,我们将数据集拆分为训练集和测试集
train_size = int(0.8 * len(X))
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]
# 最后,我们将输入数据重塑为3D格式以适应LSTM模型
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
定义LSTM模型,然后构建和训练它。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(50, activation='relu', input_shape=(X_train.shape[1], X_train.shape[2])),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2, verbose=0)
基于外汇市场的LSTM模型评估
在测试用的数据上对模型进行评估
loss = model.evaluate(X_test, y_test)
print(f'测试误差为: {loss}')
预测一下
y_pred = model.predict(X_test)
y_pred_inv = scaler.inverse_transform(y_pred)
y_test_inv = scaler.inverse_transform(y_test)
计算性能度量,比如绝对误差(MAE)
从sklearn.metrics导入均绝对误差函数mean_absolute_error
mae = mean_absolute_error(y_test_inv, y_pred_inv)
print(f'平均绝对误差是: {mae}')
尝试将结果可视化
import matplotlib.pyplot as plt
plt.plot(y_test_inv, label='实际')
plt.plot(y_pred_inv, label='预测')
plt.legend()
plt.xlabel('时间')
plt.ylabel('汇率')
plt.title('LSTM 模型预测与实际对比')
plt.show()
结论.
本文展示了如何用TensorFlow和Keras在外汇数据上训练和评估LSTM模型。利用这个模型对历史汇率数据进行分析,我们可以预测未来的价格波动并基于模型预测制定交易策略。接下来的文章中,我们将探讨更高级的LSTM架构和其他类型的循环神经网络,并探讨其在交易中的应用。
https://drive.google.com/file/d/1Ra9XZ62MCtET0ubcfW6oMJSLVS4i-4Eh/view?usp=sharing (点击这里查看文件)
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦