왜 이 코드를 실행하나요?
컴퓨터는 '3번 클래스'를 단순 숫자로 이해하기보다 '3번 자리에만 1이 있는 리스트'로 이해할 때 더 잘 배워요. 클래스 개수를 파악해 모든 정답을 0과 1의 벡터 형태로 변환합니다.
y_train[:5]
# 변환 전의 정답(0~9 숫자) 5개를 먼저 구경해요.
numberOfClass = len(np.unique(y_train))
# 전체 클래스가 총 몇 종류(10가지)인지 자동으로 계산해요.
y_train = to_categorical(y_train, numberOfClass)
# 훈련 정답을 [0,0,1,0...] 식의 원-핫 벡터로 싹 바꿔요.
y_test = to_categorical(y_test, numberOfClass)
# 테스트 정답도 똑같이 변환해 딥러닝 모델의 출력 형식과 맞춰요.
y_train[:5]
# 변환 후 정답이 어떻게 바뀌었는지 다시 5개를 확인해요.
실제 출력
변환 전:
[[6], [8], [6], [2], [2]]
변환 후:
[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
출력 해설: 단순 숫자가 10칸짜리 리스트로 펼쳐진 것을 볼 수 있어요. 이게 딥러닝이 계산하기 가장 좋은 형태예요.