
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]))
활성화 함수 적용을 위해 값을 0과 1로만 이루어진 형태로 바꿔 주는 기법
총합이 1인 형태로 바꿔서 계산해 주는 함수
원 - 핫 인코딩을 가능하게 해주는 함수