다중분류(딥러닝)

TaeHyun Lee·2023년 4월 17일
0

AI 공부

목록 보기
13/17

1. Iris 시각화

import seaborn as sns
import matplotlib.pyplot as plt

sns.pairplot(df, hue='species')
plt.show()

2. 원핫인코딩

여러 개의 값으로 된 문자열을 0과 1로만 이루어진 형태로 만들어 주는 과정을 원-핫 인코딩(one-hot encoding)이라고 합니다. 원-핫 인코딩은 판다스가 제공하는 get_dummies() 함수를 사용하면 간단하게 해낼 수 있습니다.

# 원-핫 인코딩 처리를 합니다.
y = pd.get_dummies(y)

# 원-핫 인코딩 결과를 확인합니다.
print(y[0:5])

Iris-setosa Iris-versicolor Iris-virginica
0 1 0 0
1 1 0 0
2 1 0 0
3 1 0 0
4 1 0 0

3. 소프트맥스

소프트맥스(softmax)는 다중 클래스 분류를 위한 함수로, 각 클래스에 대한 확률을 예측하는 데 사용됩니다. 이 함수는 각 클래스에 대한 예측값을 0과 1 사이의 값으로 정규화하며, 이들의 합이 1이 되도록 합니다. 딥러닝에서 매우 일반적으로 사용되는 함수 중 하나입니다.

4. Iris 결과 보기

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

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 깃허브에 준비된 데이터를 가져옵니다.
!git clone https://github.com/taehojo/data.git

# 아이리스 데이터를 불러옵니다.
df = pd.read_csv('./data/iris3.csv')

# 속성을 X, 클래스를 y로 저장합니다.
X = df.iloc[:,0:4]
y = df.iloc[:,4]

# 원-핫 인코딩 처리를 합니다.
y = pd.get_dummies(y)

# 모델 설정
model = Sequential()
model.add(Dense(12, input_dim=4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.summary()

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

# 모델 실행
history = model.fit(X, y, epochs=50, batch_size=5)

Epoch 1/30
30/30 [==============================] - 2s 2ms/step - loss: 1.4888 - accu
racy: 0.3333
... (중략) ...
Epoch 30/30
30/30 [==============================] - 0s 2ms/step - loss: 0.2746 - accu
racy: 0.9667

다음과 같은 결과가 나왔다.

profile
서커스형 개발자

0개의 댓글