inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 파이썬 머신러닝 완벽 가이드

섹션3

154

정구

작성한 질문수 2

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 값을 반환받는 과정입니다.

  1. 여기서 thresholds의 개수가 precisions, recalls보다 1개 더 적게 나오는 이유가 궁금합니다.

  2. 위에서 개수 차이로 인해 thresholds값에 따른 precisions, recalls값들이 대응되지 않는 위치에 존재하지 않나요?
    print('thresholds 5 sample:', thresholds[:5])

    print('precisions 5 sample:', precisions[1:6])

    print('recalls 5 sample:', recalls[1:6])
    이렇게 하는게 옳다 생각했는데 제 생각이 잘못되었는지 궁금합니다.

python 머신러닝 통계

답변 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 인턴

안녕하세요, 인프런 AI 인턴입니다.

정구님께서 질문하신 “precision_recall_curve 함수를 이용해 반환받는 값”에 대한 궁금증에 답변드리겠습니다.

  1. thresholds의 개수가 precisions, recalls보다 1개 적게 나오는 이유: 이 부분에 대한 궁금증은 threshold 질문드립니다. 질문에서 다루어졌습니다. 간단히 요약하자면, precision_recall_curve 함수에서 반환되는 precisionsrecalls 가치는 thresholds보다 1개 더 많은 이유는 precisions 배열의 마지막 원소가 1이고, recalls 배열의 마지막 원소가 0이기 때문입니다. 이는 함수가 작동하는 방식의 일부로, 이렇게 설정된 추가적인 값들은 모델의 성능 평가 시 좀 더 연속적이고 완전한 곡선을 생성하기 위한 목적으로 제공됩니다.

  2. thresholds값에 따른 precisions, recalls값들의 대응 관곀: 정구님의 관찰처럼, thresholds의 각 값에 정확하게 대응되기 위해 precisionsrecalls의 값을 샘플링할 때 인덱스를 조정하는 것이 맞습니다. 이는 precision_recall_curve() 관련 질문드립니다.에서 언급된 내용과 일맥상통하며, thresholds의 각 값에 대해 대응되는 precisionsrecalls 값을 얻기 위해 인덱스를 조정하는 접근 방식이 적절합니다.

결론적으로, 정구님의 생각이 올바르며, 이는 precision_recall_curve 함수의 반환 값 사이에 존재하는 관계를 정확히 이해하는 데 도움이 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

모델 서빙과 관련된 강좌가 출시되는지 질문드립니다.

0

19

2

안녕하세요 열심히 수강중인 학생입니다

0

63

2

정수 인덱싱

0

69

2

넘파이 오류

0

85

2

11강 numpy의 axis 축 질문 드립니다.

0

87

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

79

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

70

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

75

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

64

2

5강 강의 오류가 있어요.

0

85

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

72

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

69

3

파이썬 다운그레이 후 사이킷런 재설치

0

119

2

좋은 강의 감사합니다.

0

74

2

scoring 함수 음수값

0

67

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

101

2

분류 평가 정확도 예측

0

79

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

99

1

카카오톡 채널 있나요

0

108

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

190

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

172

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

148

2

실루엣 스코어..

0

86

2