모두의 딥러닝 12장 multi classificiation

YJCho·2024년 1월 18일

모두의 딥러닝

목록 보기
6/8
post-thumbnail

💻 seaborn의 iris data 직접 다중 분류 해보기

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

#클래스 이름을 숫자 형태로 바꿔 주는 라이브러리
from sklearn.preprocessing import LabelEncoder 

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf

#seed 값 설정
np.random.seed(3)
tf.random.set_seed(3)

#데이터 로드
iris = sns.load_dataset('iris')

#상관도 그래프 작성
sns.pairplot(iris, hue='species')
plt.show()

#데이터 분류
dataset = iris.values
X = dataset[:,0:4].astype(float)
Y_obj = dataset[:,4]

#문자열 클라스를 숫자로 변환
e = LabelEncoder()
e.fit(Y_obj)
Y = e.transform(Y_obj)
# 활성화 함수 적용을 위해 Y값이 숫자 0과 1로 이루어지게 적용 <one-hot-encoding>
Y_encoded = tf.keras.utils.to_categorical(Y) 

#모델의 설정
model = Sequential()
model.add(Dense(16, input_dim = 4, activation = 'relu'))
model.add(Dense(3, activation = 'softmax')) #최종 출력 값 3개 중 하나

#모델 컴파일
model.compile(loss = 'categorical_crossentropy',
              optimizer = 'adam',
              metrics = ['accuracy'])

#모델 실행
model.fit(X, Y_encoded, epochs = 50, batch_size = 1)

#결과 출력
print("\n Accuracy: %.4f" %(model.evaluate(X, Y_encoded)[1]))

📌 one-hot-encoding

활성화 함수 적용을 위해 값을 0과 1로만 이루어진 형태로 바꿔 주는 기법

📌 softmax function

총합이 1인 형태로 바꿔서 계산해 주는 함수
원 - 핫 인코딩을 가능하게 해주는 함수

profile
호로록

0개의 댓글