
주식 시장은 수많은 요소에 의해 영향을 받으며 예측이 어렵다.
하지만 머신러닝을 활용하면 과거 데이터를 분석하여
주가 변동 패턴을 학습하고, 미래 가격을 예측할 수 있다.
이번 실습에서는 Yahoo Finance API를 이용해
주가 데이터를 가져오고, 머신러닝 모델을 사용하여 주가를 예측해 본다.
1. 주가 데이터 수집 (Yahoo Finance API 활용)
Python에서 yfinance 라이브러리를 사용하여 실시간 주가 데이터를 가져올 수 있다.
import yfinance as yf |
# 삼성전자 주가 데이터 가져오기 |
stock=yf.Ticker('005930.KQ') |
df=stock.history(period='5y') |
print(df.head()) |
2. 데이터 전처리
데이터 결측치를 확인하고 처리할 것이다.
# 결측치 확인 |
print(df.isnull().sum()) |
# 결측치가 있으면 제거 |
df=df.dropna() |
주가 변동 시각화
import matplotilb.pyplot as plt |
plt.figure(figsize=(12,6) |
plt.plot(df['Close'], label='Close Price') |
plt.title('Samsung Stock Price (5 years)') |
plt.xlabel('Date') |
plt.ylabel('Stock Price') |
plt.legend() |
plt.show() |
3. 머신러닝을 활용한 주가 예측 모델
이제 머신러닝 모델을 활용해 주가를 예측해 볼 것이다.
랜덤 포레스트(Random Forest)를 사용할 것이고
최근 60일 데이터를 이용하여 다음날 주가를 예측할 것이다.
데이터셋 생성(특성 엔지니어링)
import numpy as np |
# 60일 이전 데이터를 활용하여 주가를 예측 |
window_size=60 |
X=[ ] |
Y=[ ] |
for i in range(window_size, len(df)): X.append(df['Close'].values[i-window_size:i]) Y.append(df['Close'].values[i]) |
X,Y=np.array(X), np.array(Y) |
4. 랜덤 포레스트 모델 학습 및 예측
from sklearn.model_selection import train_test_split |
from sklearn.ensemble import RandomForestRegressor |
from sklearn.metrics import mean_absolute_error |
# 데이터 분할 |
X_train, X_test, Y_train, Y_test=train_test_split(X,Y, test_size=0.2, random_state=42) |
# 랜덤 포레스트 회귀모델 학습 |
model=RandomForestRegressor(n_estimators=100, random_state=42) |
model.fit(X_train, Y_train) |
# 예측 수행 |
Y_pred=model.predict(X_test) |
# 모델 평가 |
mae=mean_absolute_error(Y_test, Y_pred) |
print(f'평균 절대 오차(MAE): {mae:.2f}') |
5. 예측 결과 시각화
plt.figure(figsize=(12,6)) |
plt.plot(y_test, label='Actual Price') |
plt.plot(y_pred, label='Predicted Price') |
plt.title('Stock Price Prediction') |
plt.xlable('days') |
plt.ylabel('Price') |
plt.legend() |
plt.show() |
머신러닝을 이용하면 과거 데이터를 기반으로 주가 변동 패턴을 학습할 수 있으나,
주가는 다양한 외부 변수(경제, 정책, 투자 심리 등)에 의해 영향을 받는다.
단순한 모델로 완벽한 예측은 어렵지만,
기본적인 트렌드 분석 및 예측이 가능하다.

'데이터 분석 기초' 카테고리의 다른 글
머신러닝-고객 세분화 및 구매 예측 (1) | 2025.03.12 |
---|---|
머신러닝을 활용한 네트워크 보안 & 해킹 탐지 (0) | 2025.03.12 |
머신러닝 프로젝트 실전 예제 (0) | 2025.02.25 |
머신러닝 모델 성능 향상을 위한 고급 기법 (0) | 2025.02.21 |
머신러닝 데이터 전처리 & 특성 엔지니어링 (1) | 2025.02.21 |