더북(TheBook)

논리 연산의 결과 두 값이 같으면 1(참), 같지 않으면 0(거짓)이 나옵니다. 위 코드에서는 예측한 결괏값(predicted_classes)과 실제 결괏값(y_test)의 데이터를 비교하여 결과가 같으면 1이, 다르면 0이 나옵니다.

같은 값을 찾기 위해서 10,000개의 수 모두를 하나하나 확인하기란 쉽지 않은 일이지요. 이때 사용할 수 있는 함수가 바로 넘파이 함수의 nonzero 함수입니다. nonzero 함수는 넘파이 배열에서 0이 아닌 값, 즉 여기에서는 1(인공지능이 예측한 값과 정답이 일치하는 수)을 찾아내는 함수입니다. 이 함수를 사용하면 다음과 같이 정확하게 예측한 데이터의 위치를 알아냅니다.

이제 nonzero 함수를 사용하여 0 아닌 값(여기에서는 1인 값)을 찾아줍니다. 이때 정확하게 예측한 데이터의 위치, 즉 첫 번째, 두 번째, 다섯 번째, 일곱 번째, ...를 correct_indices 변수에 넣어줍니다.

incorrect_indices = np.nonzero(predicted_classes != y_test)[0]

이제 인공지능이 예측하지 못한 값은 무엇이며, 그 숫자는 어떤 모양인지를 찾아보겠습니다. 앞의 과정과 비슷하지만 조금 다른 점이 있습니다.

실제 값과 예측 값이 일치하지 않는 값을 찾아내는 incorrect_indices 변수에 저장하되, 바로 윗줄의 코드와 다른 점은 일치하지 않는(!=, 프로그래밍에서 같지 않다는 의미는 !=로 표시합니다) 값을 찾는 것입니다. 따라서 윗줄의 코드와는 달리, 논리 연산의 결과 예측 값과 실제 값이 같으면 0(거짓), 같지 않으면 1(참)의 값이 나옵니다. 마찬가지로 nonzero 함수를 사용하여 일치하지 않는 값을 찾습니다.

그림 16-16에서 볼 수 있듯이 정확하게 예측하지 못한 데이터의 위치, 즉 세 번째, 네 번째, 여섯 번째, 여덟 번째를 incorrect_indices 변수에 넣습니다. 결과적으로 incorrect_indices 변수에는 인공지능이 정확하게 예측하지 못한 데이터의 위치가 저장됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.