Python/Python-Lotto

Lotto 자동생성기 - Model 학습하기

오마로 2024. 3. 17. 07:38
반응형

Lotto 기존 당첨번호를 불러와서 model 학습하기

1.Lotto 기존 당첨번호 파일 읽어오기
https://gomsfactory.tistory.com/2884

 

Lotto 자동생성기 - 기존 당첨번호 파일 읽어오기 #2

Lotto 기존 당첨번호를 저장한 파일을 python에서 읽어오기 1.Lotto 기존 당첨번호 파일 읽어오기 1)import library # Import necessary libraries import numpy as np 2)load_data() 호출 구분자 ","로 데이타를 가지고 옵니

gomsfactory.tistory.com


2.모델 호출 및 생성하기
https://gomsfactory.tistory.com/2885

 

Lotto 자동생성기 - Model생성하기

Lotto 기존 당첨번호를 불러와서 model 생성하기 1.Lotto 기존 당첨번호 파일 읽어오기 https://gomsfactory.tistory.com/2884 Lotto 자동생성기 - 기존 당첨번호 파일 읽어오기 #2 Lotto 기존 당첨번호를 저장한 파

gomsfactory.tistory.com

3.모델 학습하기
 1)호출하기

# Main function to run everything  
def main():

    # Load and preprocess data
    train_data, val_data, max_value = load_data()
   
    # Get number of features from training data
    num_features = train_data.shape[1]                          #6    로또 형태는 6개까지 선택
   
    #train_data[888][6] > 888행, 6열
    print("train_data 갯수 : ", train_data.shape[0])            #888    1110회 중 888회까지 훈련셋
    print("train_data num_features : ", train_data.shape[1])    #6    로또 형태는 6개까지 선택
    #val_data[222][6] > 222, 6열
    print("val_data 갯수 : ", val_data.shape[0])                #222    1110회 중 888회 이후는 검증셋
    print("val_data num_features : ", val_data.shape[1])        #6    로또 형태는 6개까지 선택
   
    print("max_value : ", max_value)             #로또 최대값은 45
    print("num_features : ", num_features)       #로또 형태는 6개까지 선택
   
    # Create and compile model
    # num_features = 6, max_value = 45
    model = create_model(num_features, max_value)
   
    # Train model
    train_model(model, train_data, val_data)

 2)학습하기

# Function to train the model
def train_model(model, train_data, val_data):
    # Fit the model on the training data and validate on the validation data for 100 epochs
    # x: 입력 데이터입니다.
    # y: 타겟 데이터입니다.
    # batch_size : 한 번의 배치에 포함되는 샘플의 개수입니다. 디폴트는 32입니다.
    # verbose: 학습 과정의 출력 방식을 지정합니다. 0, 1, 2 중 하나를 선택할 수 있습니다. 0은 아무런 출력을 하지 않고, 1은 진행 막대를 출력하며, 2는 각 에포크마다 한 줄의 출력을 보여줍니다.
    # validation_data: 검증 데이터의 튜플입니다. (x_val, y_val) 형태로 주어집니다.
    # epochs: 전체 데이터셋을 반복하는 횟수
    model.fit(train_data, train_data, batch_size=100, validation_data=(val_data, val_data), epochs=100)

Epoch 1/100
10/10 ━━━━━━━━━━━━━━━━━━━━ 2s 34ms/step - accuracy: 0.6633 - loss: 248.2199 - val_accuracy: 1.0000 - val_loss: 255.6164
Epoch 2/100
10/10 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - accuracy: 1.0000 - loss: 242.9738 - val_accuracy: 1.0000 - val_loss: 245.3374
Epoch 3/100
10/10 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - accuracy: 1.0000 - loss: 236.8902 - val_accuracy: 1.0000 - val_loss: 296.7888

loss값이 높습니다. 학습데이타가 1110개 너무 작기 때문입니다. 그냥 랜덤하게 뽑는게 나을 수도 있습니다.
제가 학습한다는 마음으로 ^^ 

감사합니다.

반응형