머신러닝으로 주식 가격 예측 모델 만들기 (초보자용 가이드)
주식 시장은 많은 변수가 작용하는 복잡한 시스템입니다. 하지만 머신러닝을 활용하면 **과거 데이터를 분석하여 미래 주식 가격을 예측**할 수 있습니다. 이번 글에서는 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, 강화 학습** 등의 기술을 활용해볼 수도 있습니다.
기초적인 모델을 만들었다면, 이제 데이터를 더 많이 활용하고 다양한 머신러닝 알고리즘을 실험해 보세요! 🚀