[파이썬][scikit-learn] scikit-learn에서 정밀도와 재현율

정밀도(precision)와 재현율(recall)은 머신 러닝 알고리즘의 성능을 평가하는 데 중요한 지표입니다. 이 블로그 게시물에서는 파이썬의 scikit-learn 패키지를 사용하여 정밀도와 재현율을 계산하는 방법을 살펴보겠습니다.

정밀도와 재현율이란?

정밀도(precision)는 모델이 참으로 예측한 것 중에서 실제로 참인 비율을 나타냅니다. 즉, 정밀도는 “양성”이라고 예측한 것 중에서 실제로 양성인 샘플의 비율을 말합니다.

재현율(recall)은 실제로 참인 것 중에서 모델이 참으로 예측한 비율을 나타냅니다. 즉, 재현율은 실제로 양성인 샘플 중에서 모델이 양성으로 예측한 샘플의 비율을 말합니다.

scikit-learn에서 정밀도와 재현율 계산하기

scikit-learn 패키지는 머신 러닝 모델의 정밀도와 재현율을 손쉽게 계산할 수 있는 precision_scorerecall_score 함수를 제공합니다. 이 함수들은 실제 목표값과 모델의 예측값을 인자로 받고, 정밀도와 재현율을 계산하여 반환합니다.

아래는 scikit-learn을 사용하여 정밀도와 재현율을 계산하는 간단한 예제 코드입니다.

from sklearn.metrics import precision_score, recall_score
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 가상의 데이터셋 생성
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 훈련 데이터와 테스트 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)

# 정밀도와 재현율 계산
y_pred = model.predict(X_test)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)

print(f"정밀도: {precision}")
print(f"재현율: {recall}")

위의 코드에서는 먼저 make_classification 함수를 사용하여 가상의 분류 데이터셋을 생성합니다. 그 후, train_test_split 함수를 사용하여 훈련 데이터와 테스트 데이터를 분리합니다. 이후에는 LogisticRegression 모델을 학습하고, predict 메서드를 사용하여 테스트 데이터에 대한 예측값을 계산합니다. 최종적으로 precision_scorerecall_score 함수를 사용하여 정밀도와 재현율을 계산하고 출력합니다.

결론

정밀도와 재현율은 머신 러닝 모델의 성능을 평가하는 데 중요한 지표입니다. scikit-learn 패키지를 사용하면 간편하게 정밀도와 재현율을 계산할 수 있습니다. 이를 활용하여 모델의 성능을 평가하고 최적화하는 데 도움이 될 것입니다.

정밀도와 재현율 뿐만 아니라 다른 평가 지표에 대해서도 자세히 알아보고 싶다면 scikit-learn의 문서를 참조해보세요.

Happy coding!