반응형
테스트용으로 만들어 본 주가 예측 파이썬 코드
# 필요한 라이브러리 import
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM
import FinanceDataReader as fdr
# 주가 데이터 불러오기
data = fdr.DataReader('005930', '2021-01-01', '2022-01-01') # 삼성전자 2021년 데이터
data = data[['Close']] # 종가만 사용
# 데이터 전처리
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
# 데이터셋 생성
x_train = []
y_train = []
timesteps = 60 # 과거 60일 데이터를 사용하여 다음날 주가 예측
for i in range(timesteps, len(scaled_data)):
x_train.append(scaled_data[i-timesteps:i, 0])
y_train.append(scaled_data[i, 0])
x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
# LSTM 모델 생성
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(LSTM(units=50))
model.add(Dense(units=1))
# 모델 컴파일 및 학습
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train, y_train, epochs=50, batch_size=32)
# 예측을 위한 데이터셋 생성
test_data = fdr.DataReader('005930', '2022-01-01', '2022-06-01') # 삼성전자 2022년 데이터
scaled_test_data = scaler.transform(test_data[['Close']])
x_test = []
for i in range(timesteps, len(scaled_test_data)):
x_test.append(scaled_test_data[i-timesteps:i, 0])
x_test = np.array(x_test)
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
# 예측
predicted_price = model.predict(x_test)
predicted_price = scaler.inverse_transform(predicted_price)
# 시각화
plt.plot(test_data.index[timesteps:], test_data["Close"][timesteps:], color='blue', label='실제 주가')
plt.plot(test_data.index[timesteps:], predicted_price, color='red', label='예측 주가')
plt.title('주가 예측')
plt.xlabel('날짜')
plt.ylabel('주가')
plt.xticks(rotation=45) # x축 레이블 각도 조절
plt.legend()
plt.show()
반응형
'프로그래밍_기타 언어' 카테고리의 다른 글
selenium 파이썬 스크래핑, 크롤링(Crawling) (0) | 2024.09.22 |
---|---|
사설IP 공인 IP 정규표현식 패턴 (1) | 2024.09.22 |
파이썬(Python) 정규표현식 사용 (0) | 2024.09.22 |
파이썬(python) 연산자 (0) | 2024.09.22 |
파이썬(python) 숫자형 (0) | 2024.09.22 |