iris 데이터 다중 분류 실습

2024. 6. 27. 16:11Deep Learning

 

✅ 목표

  • iris 데이터를 활용한 붓꽃 품종 분류 진행
  • 신경망에서 다중 분류 학습을 진행해보자.
# 라이브러리 import

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 셋 확보

from sklearn.datasets import load_iris
# 데이터 셋 객체 생성

iris = load_iris()
iris.keys() # 8개

# 문제 데이터 -> data

X = iris['data']

# 정답 데이터 -> target

y = iris['target']
# 가독성을 위해 데이터 프레임 화 시켜주기

X = pd.DataFrame(X, columns=iris['feature_names'])
X

# 훈련 / 평가 셋 나눠주기

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=65)
X_train.shape, X_test.shape, y_train.shape, y_test.shape

# 정답 데이터 확인 - 다중 분류

np.unique(y_train)

# 다중 분류에서는 정답 데이터를 원핫 인코딩 진행
# 텐서플로우에서 제공하는 원핫 인코딩 방법 사용해보기

from tensorflow.keras.utils import to_categorical
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
y_train # 원핫 인코딩 완료

 

✅ 신경망 모델링

# 1. 신경망 구조 설계
# 재료 가져오기

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
# 신경망 뼈대 구축

model = Sequential()

# 입력층 설정

model.add(Dense(units = 16, input_dim = 4, activation = 'relu'))

# 중간층 설정

model.add(Dense(units = 32, activation = 'relu'))
model.add(Dense(units = 16, activation = 'relu'))
model.add(Dense(units = 8, activation = 'relu'))

# 출력층 설정
# 다중 분류 : 출력층의 뉴런 갯수는 정답 데이터의 종류 갯수만큼 설정 -> 0, 1, 2이기 때문에 units = 3

model.add(Dense(units = 3, activation = 'softmax'))
# 2. 학습 / 평가 방법 설정
# 우리가 진행하는 실습은 다중 분류 실습이다.
# 다중 분류에 맞는 손실함수를 설정하자
# 이진 분류 : binary_crossentropy
# 다중 분류 : categorical_crossentropy

model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
# sgd : 확률적 경사 하강법
# 3. 모델 학습

h = model.fit(X_train, y_train, epochs = 300) # 정답은 원핫 인코딩이 진행된 데이터 넣어주기!!

# 시각화

plt.plot(h.history['accuracy'])
plt.show()

# 4. 모델 평가

model.evaluate(X_test, y_test)

 

 

✅ 다중 분류

  • 정답 데이터 -> 원핫 인코딩
  • 출력층의 뉴런의 갯수 : 클래스의 종류 갯수
    • 원핫 인코딩한 정답 데이터의 컬럼 개수
  • 활성화 함수 : softmax
  • 손실 함수 : categorical_crossentropy

 

✅ 오차역전파

 

 

✅ 활성화 함수

 

✅ 최적화 함수