1. 필요 패키지 불러오기

import tensorflow as tf
import pandas as pd
import numpy as np

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.utils import to_categorical

2. 데이터 전처리

모델을 학습시키기 위한 데이터를 준비하고, 적절하게 나누어 학습과 테스트 과정에서 사용할 수 있도록 함.

df = pd.read_csv("creditset2.csv") #pandas라이브러리에 csv파일을 데이터프레임 형식으로 불러옴

# 데이터를 학습용(train)과 테스트용(test)으로 나눔. [1,2,3,4]를 80%는 학습용, 20%는 테스트용으로 나눔
train_test_split([1,2,3,4], test_size=0.2)

# df를 80%는 학습용, 20%는 테스트용으로 나눔
train_test_split(df, test_size=0.2)

# 분할된 데이터를 변수에 할당
train_df, test_df = train_test_split(df, test_size=0.2)

# 데이터프레임인 df에서 컬럼 선택: df[[ 컬럼이름 ]]
x = df[['income', 'age', 'loan']] #해당 컬럼 3개를 갖는 데이터프레임
y = df[['default10yr']] #해당 컬럼을 갖는 데이터프레임

# One hot encoding 시켜 y에 저장. default10yr값이 0 또는 1인 경우 이를 [1,0], [0,1]로 변환하는 과정
y = to_categorical(df[['default10yr']]) 

# MinMaxScaler를 사용하여 x값을 0과 1 사이로 정규화. 모델의 입력 값을 스케일링하여 학습을 더 잘 할 수 있도록 도움
x = MinMaxScaler().fit_transform(x)

3. 분류모델의 경우 데이터 읽고 전처리까지 진행

df = pd.read_csv("creditset2.csv")  # 1) 데이터 읽기
x = df[['income', 'age', 'loan']]   # 2) 모델의 입력으로 사용할 데이터. 각 칼럼을 가진 데이터프레임을 x에 저장
y = to_categorical(df[['default10yr']]) #3) default10yr 칼럼을 one hot encoding하여 y에 저장. default10yr값이 0 또는 1인 경우 [1,0], [0,1]로 변환하는 과정. 분류 모델에서 타겟 변수를 다루기 쉽게 하기 위함
train_x, test_x, train_y, test_y = train_test_split(x,y, test_size=0.2) #4) 데이터셋 분할. 데이터의 20%를 테스트용으로 사용
train_x = MinMaxScaler().fit_transform(train_x) #5)파티셔닝된 것 중 X의 스케일링
test_x = MinMaxScaler().fit_transform(test_x) #5)파티셔닝된 것 중 X의 스케일링

4. 모델링 및 적합

# DNN 
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

#Hidden layer 구성하기

model = Sequential() #모델 구성
model.add(Dense(3, activation = 'relu', input_shape = (3, ))) #첫번째 은닉층, 3개입력->2개 은닉층 노드, Desnse: 일반적인 은닉층, Fully connected hidden layer
model.add(Dense(6, activation = 'relu')) #두번째 은닉층, 2개입력->6개 은닉층 노드, Desnse: 일반적인 은닉층, Fully connected hidden layer
model.add(Dense(2, activation = 'softmax')) #Desnse: 마지막 은닉층, Fully connected hidden layer, 분류의 경우 softmax

#모형 컴파일
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['acc']) #분류모형은 이대로 사용하기
model.summary()

#모형 학습 및 가중치 확인
model.fit(train_x,train_y,epochs = 20)  #epoch수를 조정
profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN