-
ML Intro | Iris Analysis - Evaluating the ModelMachine Learning/ML with Python Library 2024. 1. 27. 22:06
지난번, 모델을 이용해 예측을 해봤다. 그렇다면 이 예측이 맞는지 아닌지 어떻게 파악할 수 있을까? 이런 지도학습(Supervised Machine Learning)에서 트레이닝 된 모델의 성능을 평가하는 과정은 꼭 필요하다. 그렇기 때문에 우리는 지난번 scikit-learn의 train_test_split 함수를 이용해서 Training 데이터와 Test데이터로 나눴다. 여기서 만들어진 test data를 이용해서 정확도를 계산하고 모델의 성능을 평가할 수 있다.
y_pred = knn.predict(x_test) print("Prediction for Test Set:", y_pred)
Prediction for Test Set: [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 2]
테이터 데이터 38개에 대한 예측값이다. 여기서 0, 1, 2는 target_name의 인덱스에 해당한다.
print("Name 0:", iris_dataset['target_names'][0]) print("Name 1:", iris_dataset['target_names'][1]) print("Name 2:", iris_dataset['target_names'][2])
Name 0: setosa
Name 1: versicolor
Name 2: virginicatarget_names Array를 확인해보면, 각 인덱스가 어떤것을 의미하는지 알 수 있다.
그렇다면 이 예측값이 얼마나 정확할까? 우리의 y_test 데이터와 비교를 해서 정확도를 확인해볼 수 있다. y_pred와 y_test의 값들을 프린트 해서 비교하고 살펴보자.
print("y_pred:", y_pred) print("y_test:", y_test)
y_pred: [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 2]
y_test: [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 1]대충 보아도 거의 모든 숫자가 동일하다는것을 알 수 있다. 이는 38개의 데이터만 비교하기때문에, 사람의 눈으로 판단이 가능하지만, 이 숫자가 수천 수만개, 그 이상이라면? 그리고 정확한 정확도는 어느정도일까? 이 문제를 해결하는 방법이 몇가지 있다.
print("Accuracy: {:.2f}".format(np.mean(y_pred == y_test)))
Accuracy: 0.97
NumPy의 mean을 이용해서, 이 정확도를 알 수 있는데, y_pred와 y_test가 같을때는 True, 즉 1, 아닐때는 False, 즉 0이기 때문에, 이를 계산한 값을 확률로 받을 수 있다. 이 케이스에서는 앞 두자리가 0.97이 나왔고, 37/38 의 값과 비슷하기 때문에, 단 1개의 꽃만 제외하고 모두 맞췄다고 할 수 있다. 즉, 이 모델의 성능은 매우 높다.
KNN 객체의 score 함수로도 테스트 세트의 정확도를 계산할 수 있다.
print("Accuracy: {:.2f}".format(knn.score(x_test, y_test)))
Accuracy: 0.97
역시 마찬가지로, 0.97의 정확도가 나왔다. 정확도가 매우 높기 때문에, 아마추어 식물학자는 이 ML 어플리케이션을 충분히 신뢰하고 사용할만하다.
Reference
https://www.yes24.com/Product/Goods/42806875
https://colab.research.google.com/drive/1ISPKQ-D2bGmJvDlqhqTieOUz-1ujrXbu#scrollTo=OgtCrXR1U_61
'Machine Learning > ML with Python Library' 카테고리의 다른 글
지도학습 | 일반화, 과대적합, 과소적합 (0) 2024.02.04 지도학습 | 분류와 회귀 (0) 2024.01.29 ML Intro | Iris Analysis - Prediction (0) 2024.01.27 ML Intro | Iris Analysis - K-Nearest Neighbors(KNN) Model (1) 2024.01.27 ML Intro | Iris Analysis - Look at your Data (2) 2024.01.27