iris 데이터 다중 분류 실습
2024. 6. 27. 16:11ㆍDeep 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
✅ 오차역전파
✅ 활성화 함수
✅ 최적화 함수
'Deep Learning' 카테고리의 다른 글
모델저장 학습중단 과적합 (0) | 2024.07.01 |
---|---|
mlp_활성화 함수, 최적화 함수 비교 패션 데이터 다중 분류 (0) | 2024.06.28 |
폐암 데이터 이진 분류 (0) | 2024.06.26 |
학생 수학 성적 예측 (0) | 2024.06.26 |
딥러닝 기초 (0) | 2024.06.20 |