해결된 질문
작성
·
92
1
평가관련하여 질의 드리겠습니다.
from sklearn.metrics import roc_auc_score roc_auc_score(y_val,y_pred[:,1])
roc_auc 등 다 평가할때
y-val 와 값이 같은 인덱스에 딸려 와야 하는것이
아닌지요?
같은 사람이 암인지 아닌지 예측을 하고 평가를 해야 하는데.
이건 자동으로 시스템에서 맞춰 지는건지요?
제가 돌린 자료를 보고 출력을 하면 좀 다른거 같아서
보통 분활 후 y_val 과 y_pred 데이터 정열 값이 어떤 순서로 이루어지는지 궁금합니다.
답변 7
0
정말 감사드립니다.
근데. 제가 왜 자꾸 질문을 드리는 이유가
너무 다르기 때문입니다.
y-pred 값은 즉 1일 확률이 아래와 같은데
array([[0.88, 0.12],
[0.29, 0.71],
[0.41, 0.59],
[0.75, 0.25],
[0.89, 0.11],
[0.76, 0.24],
[0.49, 0.51],
[0.6 , 0.4 ],
[0.48, 0.52],
[0.85, 0.15]])
y_val.head(10)
Outcome
454 1
52 1
536 1
469 1
55 1
62 1
539 1
432 0
367 1
482 0
로 이렇게 다르게 나올 수 있는가 하는 의문때문입니다.
roc_auc_score 값은 0.80 인데요
0
옙,, 답변 주신 내용은 문구 상으로는 이해가 되는데요.
실제로 값을 좀 보고 싶은데요.
교재 272쪽(빅데이터 분석실기) 여기서 예측한
y-pred값
[0.88 0.12]
[0.29 0.71] 이 값에 대응되는 x-val과 y-val 값을 알고 싶습니다.
죄송합니다. 저도 제가 답답하네요..^^
반복된 답변입니다만 순서대로 입니다.
X_val, y_val의 첫번째 행이 [0.88 0.12]
X_val, y_val의 두번째 행이 [0.29 0.71]
입니다.
X_val.head(2)
y_val.head(2)
로 첫번째와 두번째 데이터를 확인할 수 있어요
0
감사합니다.
그래도 좀 이해가 되지 않아서 한번만 더 물어보겠습니다.
x_val 자료를 통해서 r-pred 값을 예측하고,, 이 값하고 y-val과 비교하는 거 아니겠습니까?
제가 궁금한것은 어떤 x_val 값을 가지고 y-pred값을 추정했는지 알고 싶은거고,, 이 값과 대응되는 y-val 값이 무엇인지
알수 없는지 입니다..
즉,, 명확하게 어떤 값을 가지고 추정한 값이,, 뭐고, 이것의 정답은 어떻게 되어 있다는 알고 싶은거죠..
제대로 질문이 되지 않아 계속 빙빙 ,, 죄송합니다..
x-val 이나 y-val을 출력하면 인덱스 454번 1 로 나오는데. 예측값 즉 y-pred는 0.12로 매우 낮고,
이순서로 보면 너무 다르기 때문에 이 순서는 아닌거 같고, 그럼 어떻게 하면 명확하게 무슨자료를 활용하여 뭐엇으로 예측했는데, 정답은 뭐다,
뭐 이런게 보이지가 않아서 답답합니다
질문이 섞여있어 구분을 할게요.
제가 궁금한것은 어떤 x_val 값을 가지고 y-pred값을 추정했는지 알고 싶은거고,, 이 값과 대응되는 y-val 값이 무엇인지
x_val
의 n번째 데이터로부터 예측된 y_pred[n]
은 y_val[n]
과 비교합니다.
순서를 유지한 상태로 예측되기 때문에, 각 예측값에 대응되는 실제 값을 순서대로 파악할 수 있습니다.
명확하게 어떤 값을 가지고 추정한 값이,, 뭐고,
머신러닝 모델을 통해 확률 값을 예측했어요. 각 행의 데이터를 가지고 예측합니다.
이것의 정답은 어떻게 되어 있다는 알고 싶은거죠..
정답으로 평가하는 것이 아니라 ROC-AUC 평가지표로 채점합니다.
그 평가지표에 값을 넣을 때는 예측된 확률값을 넣고 있고요
0
강사님 저술하신 빅데이터 분석기사 실기 책자를 보고 있습니다.
거기서, 파트2에 챕터 6에서,,
y-pred는
array([[0.88, 0.12], [0.29, 0.71], [0.41, 0.59], [0.75, 0.25], [0.89, 0.11], [0.76, 0.24], [0.49, 0.51], [0.6 , 0.4 ], [0.48, 0.52], [0.85, 0.15]])
y-val{:10]은
Outcome
454 1
52 1
536 1
469 1
55 1
62 1
539 1
432 0
367 1
482 0
인데요.. 여기서 부터 헷갈려서요.. pred 에서 예측한 첫번째 값인 [0.88, 0.12]이 값은 도대체 몇번째 y_val 값인지 모르겠습니다.
454번 인덱스에 값인지요? 그런 아닌거 같아서
제대로 질문의 의도가 전달되었는지 모르겠습니다.
pred 에서 예측한 첫번째 값인 [0.88, 0.12]는 첫번째 데이터(행)의 확률값입니다.
y_val 값에서도 첫번째 데이터(행)입니다.
0확률(정상) 0.88
1확률(당뇨) 0.12가 되는거죠
그리고 도서에서는 outcome을 나눌 때 인덱스 번호를 가져가지 않아요
target = train.pop('Outcome')로 값만 target 변수로 옮기고 있습니다.
인덱스는 신경쓸 필요 없습니다. p.202 첫번째 그림을 보면 X와 y는 세트로 함께 잘라내고있어요 (물론 X와 y를 랜덤하게 세트로 자릅니다)
0
질문이 어떻게 매칭해서 비교하느냐 말하는거죠?
순서대로입니다!
pred를 예측값, y_val를 정답이라고 정의 한다면 둘 다 순서가 같다는 전제입니다.
train_test_split()를 사용하면 랜덤으로 나눠지기 때문에 순서는 달라질 수 있어요
하지만 데이터를 X_train과 X_val y_train, y_val 분할 할때도
train의 X와 y의 순서는 같고
val의 X와 y의 순서는 같아요.
따라서 임의로 정렬을 할 필요는 전혀 없습니다.
분할 후 데이터가 원래 데이터셋의 순서를 유지 -> 분할이 되었다면 기본 설정이 랜덤 추출이라 순서를 유지할 수 없어요!
인덱스를 확인하고 정렬하는 작업은 무의미 합니다.
[심화]
만약 시계열이라면 순서를 변경하면 안되기 때문에 인덱스를 활용해서 데이터를 슬라이싱 하는 방식을 사용해 val을 만들어요
0
인덱스 확인: 분할 후 데이터가 원래 데이터셋의 순서를 유지하도록 보장하기 위해, y_val
과 y_pred
의 인덱스를 확인할 수 있습니다. 보통 이들은 동일한 데이터로부터 나왔기 때문에 인덱스는 자동으로 맞춰집니다.
이걸 확인할 수 있는 방법이 있는지요?
저는 궁금하네요..
정열을 해보고 해도, 잘 안 맞아서요..
인덱스를 같은지 좀 확인하는 방법 좀 알려주세요..^^
0
안녕하세요, 인프런 AI 인턴입니다. kccjjang님께서 질문하신 예측 및 평가 관련한 내용에 대해 설명드리겠습니다.
roc_auc_score(y_val, y_pred[:,1])
에서 y_val
과 y_pred
의 관계에 대해 궁금하신 것 같습니다. 이 함수는 모델이 예측한 확률과 실제 값(y_val
)을 비교하여 ROC AUC 스코어를 계산합니다.
데이터 프레임의 일치: 평가 시 y_val
과 y_pred
는 서로 매칭된 데이터셋에서 나옵니다. 이는 모델에서 예측한 결과(y_pred
)가 타깃 변수(y_val
)와 동일한 인덱스 구조 내의 데이터여야 함을 의미합니다. 따라서, 당신이 데이터를 분할할 때 train_test_split
와 같은 함수를 사용하는 경우, 데이터의 순서가 자동으로 정렬됩니다.
인덱스 확인: 분할 후 데이터가 원래 데이터셋의 순서를 유지하도록 보장하기 위해, y_val
과 y_pred
의 인덱스를 확인할 수 있습니다. 보통 이들은 동일한 데이터로부터 나왔기 때문에 인덱스는 자동으로 맞춰집니다.
여기와 관련된 비슷한 질문들이 Inflearn에 이미 존재하여 추천 드립니다:
작업형2모의문제1 / 평가 (predict/predict_proba)질문: 이 게시물에서는 ROC AUC 평가 시 predict_proba
와 predict
의 차이에 대해 설명하고 있습니다. roc_auc_score
의 핵심 사용법에 대한 설명을 확인할 수 있습니다.
3회 기술유형(작업형2) roc_auc_score(y_val,pred[:,1]) 문의: ROC AUC 평가 시 확률을 활용하는 것이 모델의 성능 평가에 어떻게 영향을 미치는지에 대해 다룹니다.
이와 같은 자료들을 통해 roc_auc_score
을 사용할 때 데이터 정렬과 관련된 이해를 돕기 위한 구체적 사례들을 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
성능이 떨어지는 모델이 나올 수는 있습니다.
그런데 0.8이 나왔다면 나쁘지 않을 모델로 볼 수있네요
우리가 함께본 데이터는 조금 많이 틀렸을 수도 있으나 전체적으로는 그게 아닌것 같네요!
일부를 뜯어 보는 것은 좋으나 평가는 평가지표로 봐주세요!