Python/Python-Lotto

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

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

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.모델 호출 및 생성하기
 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)

2)모델 생성

# Function to create the model
# param : num_features = 6, max_value = 45
def create_model(num_features, max_value):
    # Create a sequential model
    model = keras.Sequential()
    # Add an Embedding layer, LSTM layer, and Dense layer to the model
    # 입력될 총 단어 수는 45 0~45, 임베딩 후 출력되는 크기는 6(node수)
    model.add(layers.Embedding(input_dim=max_value+1, output_dim=6))  
    model.add(layers.LSTM(128))
    model.add(layers.Dense(num_features, activation='softmax')) #softmax 다중분류 / # sigmoid 이진분류(0,1)
    # Compile the model with categorical crossentropy loss, adam optimizer, and accuracy metric
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

 - Keras에서 제공하는 Sequential 모델을 사용하여 정의
 - 로또는 총 45개의 번호로 구성되어 있기에 max_values는 45입니다.
 - Embedding Layer에서 input_dim은 0~45 범주이기에 0을 포함하여 max_value + 1로 지정됩니다. output_dim은 6숫자
 - LSTM(Long Short-Term Memory) 층을 추가하는 것을 나타냅니다. LSTM은 순환 신경망(Recurrent Neural Network, RNN)의 한 종류로, 시퀀스 데이터를 처리하는 데 사용됩니다.
 - LSTM 층의 출력 차원 수 : 128
 - 최종결과값은 num_features : 6개 이고, 활성화함수는 softmax

감사합니다.

반응형