|
이 코드와 자료를 참고하여 주식 데이터에 대한 AI 모델을 개발하시기 바랍니다. 주식 시장은 변동성이 크기 때문에 모델의 성능을 지속적으로 검토하고 변화에 맞춰 조정하는 것이 중요합니다. 추가적인 질문이나 도움이 필요하시면 언제든지 말씀해 주세요!
GitHub에서 프로젝트 찾는 방법
주요 라이브러리
간단한 코딩 예시 (PyTorch를 이용한 LSTM 모델)
import torch
import torch.nn as nn
import pandas as pd
import numpy as np
# 데이터 로드
data = pd.read_csv('stock_data.csv')
# 데이터 전처리 (예시)
# ...
# 데이터를 Tensor 형태로 변환
# ...
# LSTM 모델 정의
class LSTMModel(nn.Module):
def __init__(self, input_dim, hidden_dim, num_layers, output_dim):
super(LSTMModel, self).__init__()
self.hidden_dim = hidden_dim
self.num_layers = num_layers
self.lstm = nn.LSTM(input_dim, hidden_dim, num_layers, batch_first=True)
self.fc = nn.Linear(hidden_dim, output_dim)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_dim).to(device)
c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_dim).to(device)
out, _ = self.lstm(x, (h0, c0))
out = self.fc(out[:, -1, :])
return out
# 모델 학습
# ...
# 모델 평가
# ...
간단한 예시를 통해 LSTM을 사용한 주식 예측 모델을 Python으로 구현하는 방법
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
# 1. 데이터 로드 (여기서는 간단한 예시 데이터 사용)
data = np.sin(np.arange(0, 200, 0.1)) + np.random.normal(0, 0.1, 2000)
df = pd.DataFrame({'Close': data})
# 2. 데이터 전처리 (MinMaxScaler 사용)
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(df)
# 3. 훈련 데이터와 테스트 데이터 분할
train_data = scaled_data[:1500]
test_data = scaled_data[1500:]
# 4. 시퀀스 데이터 생성
def create_sequences(data, seq_length):
xs = []
ys = []
for i in range(len(data)-seq_length-1):
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 = 50
X_train, y_train = create_sequences(train_data, seq_length)
X_test, y_test = create_sequences(test_data, seq_length)
# 5. LSTM 모델 구축
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(seq_length, 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# 6. 모델 학습
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 7. 예측
predictions = model.predict(X_test)
# 8. 역 스케일링 (MinMaxScaler의 inverse_transform 사용)
predictions = scaler.inverse_transform(predictions)
y_test = scaler.inverse_transform(y_test)
# 이후 예측 결과를 사용하여 분석 등을 수행할 수 있습니다.
# (예: matplotlib를 사용하여 시각화)
print(predictions)
코드 설명:
GitHub 추가 자료: