군침이 싹 도는 코딩
softmax 결과를 레이블 인코딩으로 바꾸는 법 (argmax) 본문
y_test
>>> array([9, 2, 1, ..., 8, 1, 5], dtype=uint8)
y_pred
>>>
array([[2.20964534e-06, 1.08094355e-05, 9.79511606e-06, ...,
1.81616340e-02, 9.49416881e-06, 9.58712578e-01],
[3.86873609e-04, 3.95946366e-11, 9.89674151e-01, ...,
2.52638402e-14, 2.08223998e-08, 1.40853149e-13],
[4.37165903e-09, 9.99999940e-01, 7.74465492e-11, ...,
1.44372901e-15, 2.84200545e-11, 4.31300395e-13],
...,
[3.20444873e-04, 1.72288335e-08, 1.08582329e-03, ...,
2.72887689e-07, 9.97514784e-01, 7.87202268e-08],
[4.04075081e-06, 9.99791861e-01, 5.28116345e-07, ...,
1.71236345e-10, 6.93887444e-07, 8.45799661e-08],
[1.15618832e-05, 3.99035031e-07, 7.97168741e-06, ...,
9.16359539e-04, 7.36837756e-05, 1.76666090e-05]], dtype=float32)
# 소프트 맥스로 예측값을 뽑아내면 아웃풋 노드를 설정한 만큼의 갯수가 나온다
원래 결과값은 1개씩만 있는반면 해당 코딩에서는 아웃풋 노드를 10개를 주었기때문에 예측값의 결과가
1개당 10개씩 나온다 이러면 검증 결과를 거칠때 컨퓨전 매트릭스를 사용할 수 없다
y_pred.argmax(axis=1)
>>> array([9, 2, 1, ..., 8, 1, 5])
# 넘파이의 함수 argmax() 를 쓰면 해당 리스트안에서 가장 큰 값을 찾아준다
파라미터안에 axis 1을 넣게되면 모든 리스트의 가장 큰 값을 찾아주게된다
출력을 보면 실제값과 동일하게 레이블 인코딩으로 표기된것을 볼 수 있다
confusion_matrix(y_test,y_pred)
>>>
array([[881, 1, 15, 24, 1, 1, 71, 0, 6, 0],
[ 1, 975, 1, 18, 2, 0, 1, 0, 2, 0],
[ 21, 2, 908, 13, 38, 0, 18, 0, 0, 0],
[ 27, 8, 13, 915, 13, 0, 22, 0, 2, 0],
[ 0, 3, 297, 58, 619, 0, 20, 0, 3, 0],
[ 0, 0, 0, 0, 0, 922, 0, 50, 1, 27],
[165, 3, 197, 27, 107, 0, 491, 0, 10, 0],
[ 0, 0, 0, 0, 0, 3, 0, 981, 0, 16],
[ 3, 3, 4, 6, 1, 1, 4, 5, 973, 0],
[ 0, 0, 0, 1, 0, 2, 1, 47, 0, 949]])
# 컨퓨전 매트릭스를 사용해보니 정상작동한것을 볼 수 있다
'Python > Deep Learning' 카테고리의 다른 글
Flatten라이브러리 없이 이미지를 평탄화 하는법 (0) | 2022.12.29 |
---|---|
epoch 에 따른 데이터의 overfitting 과 해결법 (callback class) (0) | 2022.12.29 |
activation 함수 softmax / 분류 문제 loss 셋팅 (0) | 2022.12.28 |
Flatten 라이브러리 사용 이유 (0) | 2022.12.28 |
EarlyStopping 라이브러리 사용법 (0) | 2022.12.28 |