다음은 yfinance를 이용해 특정 종목(TSLA: 테슬라)의 주가 데이터를 가져오는 코드이다.
python
코드 복사
import yfinance as yf import pandas as pd # 테슬라(TSLA) 주가 데이터 가져오기 ticker = 'TSLA' data = yf.download(ticker, start="2020-01-01", end="2024-01-01") # 데이터 확인print(data.head())
여기서는 Linear Regression(선형 회귀) 모델을 사용해 간단한 주가 예측을 진행한다.
학습 데이터 준비
주가 예측을 위해 t-1일의 종가를 입력(X)으로 하고, t일의 종가를 출력(y)으로 설정한다.
python
코드 복사
import numpy as np X = [] y = [] for i inrange(1, len(data_scaled)): X.append(data_scaled[i-1]) # 이전 날짜의 종가 y.append(data_scaled[i]) # 해당 날짜의 종가 X = np.array(X) y = np.array(y) # 학습 데이터와 테스트 데이터 분리 (80% 학습, 20% 테스트) train_size = int(len(X) * 0.8) X_train, X_test = X[:train_size], X[train_size:] y_train, y_test = y[:train_size], y[train_size:]
4. 모델 학습 및 평가
선형 회귀 모델 학습
python
코드 복사
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) # 모델 평가 score = model.score(X_test, y_test) print(f"모델 정확도 (R^2 Score): {score:.4f}")
✅ 출력 예시: 모델 정확도 (R^2 Score): 0.85 (※ 정확도는 데이터에 따라 달라질 수 있음)
5. 주가 예측 및 시각화
미래 데이터 예측하기
python
코드 복사
import matplotlib.pyplot as plt # 실제 값과 예측 값 비교 predicted = model.predict(X_test) # 데이터를 원래 스케일로 변환 y_test_original = scaler.inverse_transform(y_test) predicted_original = scaler.inverse_transform(predicted) # 그래프 그리기 plt.figure(figsize=(12, 6)) plt.plot(y_test_original, label="Actual Price", color='blue') plt.plot(predicted_original, label="Predicted Price", color='red', linestyle='dashed') plt.legend() plt.title("Stock Price Prediction (Linear Regression)") plt.show()
✅ 결과: 실제 주가(파란색)와 예측 주가(빨간색)를 비교하는 그래프 출력.
6. 한 단계 더 나아가기 (딥러닝 적용하기)
선형 회귀 모델은 단순한 패턴만 학습하므로, LSTM (Long Short-Term Memory) 같은 딥러닝 모델을 적용하면 더 정교한 예측이 가능하다.
python
코드 복사
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense # 모델 구성 model = Sequential([ LSTM(50, return_sequences=True, input_shape=(1, 1)), LSTM(50, return_sequences=False), Dense(1) ]) # 모델 컴파일 및 학습 model.compile(optimizer='adam', loss='mean_squared_error') model.fit(X_train.reshape(-1, 1, 1), y_train, epochs=20, batch_size=16) # 예측 수행 predicted_lstm = model.predict(X_test.reshape(-1, 1, 1)) predicted_lstm_original = scaler.inverse_transform(predicted_lstm) # 결과 시각화 plt.plot(y_test_original, label="Actual Price", color='blue') plt.plot(predicted_lstm_original, label="Predicted Price (LSTM)", color='green', linestyle='dashed') plt.legend() plt.title("Stock Price Prediction (LSTM)") plt.show()
✅ 결과: 딥러닝 모델을 활용한 주가 예측 그래프 출력.
결론
✔ 선형 회귀 모델: 간단한 예측 가능, 학습 속도가 빠름 ✔ 딥러닝(LSTM) 모델: 복잡한 패턴도 학습 가능, 하지만 더 많은 데이터가 필요
초보자라면 선형 회귀 모델부터 시작하고, 더 정교한 예측을 원한다면 LSTM과 같은 딥러닝 모델을 적용하는 것이 좋다.