작성
·
99
0
from sklearn.metrics import precision_recall_curve
# 실제값 데이터 셋과 레이블 값이 1일 때의 예측 확률을 precision_recall_curve 인자로 입력
precisions, recalls, thresholds = precision_recall_curve(y_test, pred_proba_class1 )
print('반환된 분류 결정 임곗값 배열의 Shape:', thresholds.shape)
print('반환된 precisions 배열의 Shape:', precisions.shape)
print('반환된 recalls 배열의 Shape:', recalls.shape)
print('thresholds 5 sample:', thresholds[:5])
print('precisions 5 sample:', precisions[:5])
print('recalls 5 sample:', recalls[:5])
precision_recall_curve 함수를 이용해 precisions, recalls, thresholds 값을 반환받는 과정입니다.
여기서 thresholds의 개수가 precisions, recalls보다 1개 더 적게 나오는 이유가 궁금합니다.
위에서 개수 차이로 인해 thresholds값에 따른 precisions, recalls값들이 대응되지 않는 위치에 존재하지 않나요?
print('thresholds 5 sample:', thresholds[:5])
print('precisions 5 sample:', precisions[1:6])
print('recalls 5 sample:', recalls[1:6])
이렇게 하는게 옳다 생각했는데 제 생각이 잘못되었는지 궁금합니다.
답변 2
0
안녕하십니까,
아래 인프런 AI 인턴이 잘 답해줬군요.
precision_recall_curve에서 precision과 recall은 threshold보다 1개가 더 있습니다. precision의 경우 마지막 원소가 1, recall의 경우 마지막 원소가 0 입니다.
아래 API 설명을 참조하시면 좋을 것 같습니다.
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html
요약하자면 맨 마지막 precision과 recall에 대응 되는 threshold가 없으며, 이는 그래프를 그릴 때 y축 시작 지점으로 간주한다는 의미 입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
정구님께서 질문하신 “precision_recall_curve 함수를 이용해 반환받는 값”에 대한 궁금증에 답변드리겠습니다.
thresholds의 개수가 precisions, recalls보다 1개 적게 나오는 이유: 이 부분에 대한 궁금증은 threshold 질문드립니다. 질문에서 다루어졌습니다. 간단히 요약하자면, precision_recall_curve
함수에서 반환되는 precisions
와 recalls
가치는 thresholds
보다 1개 더 많은 이유는 precisions
배열의 마지막 원소가 1이고, recalls
배열의 마지막 원소가 0이기 때문입니다. 이는 함수가 작동하는 방식의 일부로, 이렇게 설정된 추가적인 값들은 모델의 성능 평가 시 좀 더 연속적이고 완전한 곡선을 생성하기 위한 목적으로 제공됩니다.
thresholds값에 따른 precisions, recalls값들의 대응 관곀: 정구님의 관찰처럼, thresholds
의 각 값에 정확하게 대응되기 위해 precisions
와 recalls
의 값을 샘플링할 때 인덱스를 조정하는 것이 맞습니다. 이는 precision_recall_curve() 관련 질문드립니다.에서 언급된 내용과 일맥상통하며, thresholds
의 각 값에 대해 대응되는 precisions
와 recalls
값을 얻기 위해 인덱스를 조정하는 접근 방식이 적절합니다.
결론적으로, 정구님의 생각이 올바르며, 이는 precision_recall_curve
함수의 반환 값 사이에 존재하는 관계를 정확히 이해하는 데 도움이 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.