下面為你詳細介紹如何使用Python結合深度學習庫TensorFlow
和Keras
來構建一個簡單的交易預測模型。在這個示例中,我們以股票價格預測為例,假設我們要根據過去一段時間的股票價格數據來預測未來的價格走勢。
步驟分析
- 數據準備:獲取股票價格數據,對數據進行清洗和預處理,劃分訓練集和測試集。
- 模型構建:使用深度學習模型,如長短期記憶網絡(LSTM)進行構建。
- 模型訓練:使用訓練集對模型進行訓練。
- 模型評估:使用測試集對模型進行評估。
- 預測:使用訓練好的模型進行預測。
代碼實現
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
import matplotlib.pyplot as plt# 1. 數據準備
# 這里假設使用pandas讀取csv文件,實際中你可以替換為自己的數據文件路徑
data = pd.read_csv('your_stock_data.csv')
# 提取收盤價作為預測目標
close_prices = data['Close'].values.reshape(-1, 1)# 數據歸一化
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_close_prices = scaler.fit_transform(close_prices)# 劃分訓練集和測試集
train_size = int(len(scaled_close_prices) * 0.8)
train_data = scaled_close_prices[:train_size]
test_data = scaled_close_prices[train_size:]# 創建訓練數據和標簽
def create_sequences(data, seq_length):xs = []ys = []for i in range(len(data) - seq_length):x = data[i:i+seq_length]y = data[i+seq_length]xs.append(x)ys.append(y)return np.array(xs), np.array(ys)seq_length = 30
X_train, y_train = create_sequences(train_data, seq_length)
X_test, y_test = create_sequences(test_data, seq_length)# 2. 模型構建
model = Sequential()
model.add(LSTM(50, return_sequences=True, input_shape=(seq_length, 1)))
model.add(LSTM(50, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))# 編譯模型
model.compile(optimizer='adam', loss='mean_squared_error')# 3. 模型訓練
model.fit(X_train, y_train, batch_size=32, epochs=50)# 4. 模型評估
predictions = model.predict(X_test)
predictions = scaler.inverse_transform(predictions)
y_test = scaler.inverse_transform(y_test)# 計算均方誤差
mse = np.mean((predictions - y_test) ** 2)
print(f"均方誤差: {mse}")# 5. 預測可視化
plt.plot(y_test, label='實際價格')
plt.plot(predictions, label='預測價格')
plt.xlabel('時間')
plt.ylabel('股票價格')
plt.title('股票價格預測')
plt.legend()
plt.show()
代碼解釋
-
數據準備:
- 使用
pandas
讀取股票價格數據,提取收盤價作為預測目標。 - 使用
MinMaxScaler
對數據進行歸一化處理,將數據縮放到0到1的范圍內。 - 劃分訓練集和測試集,比例為8:2。
- 創建時間序列數據,每個序列長度為30。
- 使用
-
模型構建:
- 使用
Sequential
模型構建一個LSTM模型,包含兩個LSTM層和兩個全連接層。 - 使用
adam
優化器和均方誤差損失函數編譯模型。
- 使用
-
模型訓練:
- 使用訓練集對模型進行訓練,設置批量大小為32,訓練輪數為50。
-
模型評估:
- 使用測試集對模型進行評估,計算均方誤差。
-
預測可視化:
- 使用
matplotlib
繪制實際價格和預測價格的折線圖。
- 使用
注意事項
- 請將
'your_stock_data.csv'
替換為你自己的股票價格數據文件路徑。 - 可以根據實際情況調整模型的參數,如LSTM層的神經元數量、訓練輪數等。
- 實際的交易預測問題可能更加復雜,需要考慮更多的因素,如成交量、市場情緒等。