手记

基于LSTM的外汇数据预测——用TensorFlow和Keras训练和评估模型

简介:

本文将讨论如何使用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 (点击这里查看文件)

0人推荐
随时随地看视频
慕课网APP