import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv1D, MaxPooling1D, Flatten

# 读取CSV数据
data = pd.read_csv('stock_data.csv')

# 提取股票价格列
prices = data['Price'].values

# 数据归一化
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_prices = scaler.fit_transform(prices.reshape(-1, 1))

# 创建训练集和测试集
train_size = int(len(scaled_prices) * 0.8)
train_data = scaled_prices[:train_size]
test_data = scaled_prices[train_size:]

# 构建时间序列数据
def create_sequences(data, seq_length):
    X = []
    y = []
    for i in range(len(data)-seq_length):
        X.append(data[i:i+seq_length])
        y.append(data[i+seq_length])
    return np.array(X), np.array(y)

seq_length = 10
X_train, y_train = create_sequences(train_data, seq_length)
X_test, y_test = create_sequences(test_data, seq_length)

# 构建卷积神经网络模型
model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(seq_length, 1)))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(50, activation='relu'))
model.add(Dense(1))

# 编译模型
model.compile(optimizer='adam', loss='mse')

# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=16)

# 使用模型进行预测
predicted_prices = model.predict(X_test)

# 反归一化
predicted_prices = scaler.inverse_transform(predicted_prices)

# 打印预测结果
for i in range(len(predicted_prices)):
    print('Predicted:', predicted_prices[i], 'Actual:', test_data[i+seq_length])
Python使用卷积神经网络预测股票价格(Conv1D模型)

原文地址: https://www.cveoy.top/t/topic/f28r 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录