Home Deep Learning 회귀 분석을 활용한 로또 예측 프로그램

회귀 분석을 활용한 로또 예측 프로그램

0
선형 회귀 분석
선형 회귀 분석, 로또번호예측, 랜덤포레스트
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor

# CSV 파일에서 과거 로또 번호 데이터 로드 (예: lotto_history.csv)
# CSV 파일에는 1회차부터 순서대로 로또 번호가 저장되어 있어야 합니다.
# 엑셀에서 1회차 - 1행, 2회차 - 2행 순서로 바꿈.
df = pd.read_csv('lotto_history.csv')

# 마지막 열을 타겟 데이터로 사용 (마지막 열은 다음 회차의 로또 번호)
X = df.iloc[:, :-1]  # 훈련 데이터: 마지막 열을 제외한 모든 열
y = df.iloc[:, -1]   # 타겟 데이터: 마지막 열

# 데이터를 훈련 세트와 테스트 세트로 나눔 (예: 80% 훈련, 20% 테스트)
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)

# 테스트 세트를 사용하여 모델 평가
score = model.score(X_test, y_test)
print(f'모델 정확도: {score}')

# 다음 회차 예상 번호 생성 (예: 6개의 예측)
next_round_predictions = model.predict(X_test.iloc[:7])
next_round_predictions = np.round(next_round_predictions).astype(int)

# 중복 제거 및 정렬
unique_numbers = np.unique(next_round_predictions)
sorted_numbers = np.sort(unique_numbers)

print(f'다음 회차 예상 번호: {sorted_numbers}')

회귀분석을 활용해서 로또 번호 출력 프로그램을 만들어봤습니다. 회귀 분석은 로또 번호 예측에 적합하지 않다는 분들이 있던데 로또 번호를 예상해줄 수 있는 적합한 이론이 있을까요? 그냥 심심풀이로 만들어본 것이니 그냥 심심풀이로만 사용해보시면 어떨까요?

위 코드의 주요 과정

  1. CSV 파일에서 과거의 로또 번호 데이터를 로드합니다.
  2. 훈련 데이터와 타겟 데이터를 분리합니다. 훈련 데이터는 마지막 열을 제외한 열이며, 타겟 데이터는 마지막 열입니다.
  3. 훈련 데이터와 타겟 데이터를 훈련 세트와 테스트 세트로 나눕니다.
  4. 랜덤 포레스트 회귀 모델을 생성하고 훈련 데이터를 사용하여 모델을 학습시킵니다.
  5. 테스트 세트를 사용하여 모델을 평가하고 정확도를 출력합니다.
  6. 다음 회차의 예상 번호를 생성하여 출력합니다.

랜덤 포레스트 회귀 모델??

선형 회기 이론은 독립변수와 종속변수의 상관관계를 선의 방식으로 표현하는 것을 말합니다. 

‘순열 특성 중요도’라는 개념이 있는데 내용이 상당히 어려운 내용입니다. 랜덤 포레스트는 이 개념안에 있는 모델이고요. ‘순열 특성 중요도’의 최대 장점 하나를 말씀드리면, 다른 기계학습 모델에서는 모델 재학습에 많은 시간을 쓰게 되지만 ‘순열 특성 중요도’ 모델에서는 모델 오류를 비교하고 다시 재학습하지 않기 때문에 시간을 절약할 수 있는 최대 장점을 갖고 있습니다. 그래서 텐서플로우를 활용해서 머신러닝을 돌리는 것보다 훨씬 더 빠른 예측값을 얻을 수 있습니다.

Exit mobile version