카테고리 없음

머신러닝으로 주식 가격 예측 모델 만들기 (초보자용 가이드)

infobox3030 2025. 3. 25. 09:39

 

주식 시장은 많은 변수가 작용하는 복잡한 시스템입니다. 하지만 머신러닝을 활용하면 **과거 데이터를 분석하여 미래 주식 가격을 예측**할 수 있습니다. 이번 글에서는 Python과 머신러닝을 사용하여 간단한 **주식 가격 예측 모델을 만드는 방법**을 소개합니다.

1. 주식 가격 예측을 위한 머신러닝 개념

머신러닝으로 주식 가격을 예측하는 방법에는 여러 가지가 있습니다. 이번 실습에서는 **선형 회귀(Linear Regression)** 모델을 사용하여 **과거 주가 데이터를 기반으로 미래 가격을 예측**하는 모델을 만들어 보겠습니다.

📌 사용 기술

  • Python: 머신러닝 모델을 개발하는 대표적인 언어
  • Pandas: 데이터 분석 및 처리
  • scikit-learn: 머신러닝 모델 학습
  • Matplotlib: 데이터 시각화

이제 실습을 시작해 볼까요? 😊

2. 개발 환경 설정 및 라이브러리 설치

먼저, Python 환경을 준비하고 필요한 라이브러리를 설치해야 합니다.

📌 필수 라이브러리 설치

pip install numpy pandas scikit-learn matplotlib yfinance
  • NumPy: 수학적 계산을 위한 라이브러리
  • Pandas: 데이터 분석 및 처리
  • Scikit-learn: 머신러닝 모델 학습
  • Matplotlib: 데이터 시각화
  • yfinance: 야후 파이낸스를 통해 주가 데이터를 가져오는 라이브러리

이제 Python을 실행하고, 코드를 따라 해보세요!

3. 주가 데이터 수집하기

야후 파이낸스(yfinance)를 사용하여 특정 종목의 주가 데이터를 불러오겠습니다. 예제로 **삼성전자(005930.KQ)** 주가 데이터를 가져와 보겠습니다.

import yfinance as yf
import pandas as pd

# 삼성전자 주가 데이터 가져오기
stock = yf.Ticker("005930.KQ")
data = stock.history(period="1y")  # 최근 1년 데이터
print(data.head())

이제 데이터를 확인하고 **머신러닝 모델**을 학습해보겠습니다.

4. 데이터 전처리 및 특성 선택

주식 예측 모델을 만들려면 **적절한 입력 데이터(특성, Feature)** 를 선택해야 합니다.

📌 데이터 전처리

# 필요한 데이터 선택 (종가만 사용)
data = data[['Close']]  

# NaN 값 제거
data.dropna(inplace=True)

print(data.head())

이제 머신러닝 모델에 학습시킬 데이터를 준비합니다.

📌 데이터 분할

from sklearn.model_selection import train_test_split

# 날짜를 숫자로 변환
data['Days'] = range(len(data))

# 입력(X)과 출력(y) 설정
X = data[['Days']]
y = data['Close']

# 학습 데이터와 테스트 데이터 분리 (80:20)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

5. 머신러닝 모델 학습

이제 선형 회귀(Linear Regression) 모델을 학습시켜 보겠습니다.

from sklearn.linear_model import LinearRegression

# 모델 생성
model = LinearRegression()

# 모델 학습
model.fit(X_train, y_train)

이제 학습된 모델을 평가하고, 예측을 해보겠습니다.

6. 모델 평가 및 예측

📌 모델 성능 평가

from sklearn.metrics import mean_absolute_error

# 예측
y_pred = model.predict(X_test)

# 평가 (오차 측정)
mae = mean_absolute_error(y_test, y_pred)
print(f"평균 절대 오차(MAE): {mae:.2f}")

이제 모델을 활용하여 미래 주가를 예측해 보겠습니다.

📌 미래 주가 예측

import numpy as np

# 향후 10일 예측
future_days = np.array(range(len(data), len(data) + 10)).reshape(-1, 1)
future_pred = model.predict(future_days)

print("미래 주가 예측:")
print(future_pred)

📌 예측 결과 시각화

import matplotlib.pyplot as plt

# 기존 데이터
plt.scatter(X, y, label="Actual Prices", color="blue")
plt.plot(X, model.predict(X), label="Predicted Prices", color="red")

# 미래 예측 값 추가
plt.scatter(future_days, future_pred, label="Future Prediction", color="green")

plt.xlabel("Days")
plt.ylabel("Stock Price")
plt.legend()
plt.show()

🔎 결론: 머신러닝으로 주식 예측, 가능할까?

이번 글에서는 Python과 머신러닝을 활용해 주식 가격을 예측하는 간단한 모델을 만들어 보았습니다. 하지만 **실제 주식 시장은 예측이 쉽지 않으며, 단순한 머신러닝 모델로 완벽한 예측은 어렵습니다.** 보다 정교한 모델을 만들기 위해 **LSTM, Random Forest, 강화 학습** 등의 기술을 활용해볼 수도 있습니다.

기초적인 모델을 만들었다면, 이제 데이터를 더 많이 활용하고 다양한 머신러닝 알고리즘을 실험해 보세요! 🚀