정확도, 정밀도, 재현율
544
작성한 질문수 2
강의 잘 듣고 있습니다.
제가 강의에서 배운 내용들을 바탕으로 외부 데이터 파일로 평가 모델을 수행하고 있습니다. 그런데 어디서부터 잘못됐는지
정확도, 재현율, 정밀도 세가지 모두가 0.8590으로 동일한 값이 나옵니다. 혹시나 하여 임계값을 교재에 있는것처럼 변경을 하여도 아래코드와 같이 변화가 없습니다. 무엇이 문제인지 알 수 있을까요?
임계값: 0.4
오차 행렬
[[29 3]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
임계값: 0.45
오차 행렬
[[29 3]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
임계값: 0.5
오차 행렬
[[30 2]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
임계값: 0.55
오차 행렬
[[30 2]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
임계값: 0.6
오차 행렬
[[30 2]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
감사합니다.
답변 3
1
출력하는 코드를 헷갈리셨군요.
아래와 같이 변경해 보십시요. 지금은 정확도만 반복할 뿐입니다. 그리고 accuracy의 변수명이 accuaracy 로 되어 있는 부분도 있습니다. 여기도 수정하십시요.
를 아래로 변경하십시요.
0
답변 감사드립니다.
제가 사용한 데이터의 shape은 (236, 17)이며 상관관계분석을 통해 유의미하다고 판단된 열 3개만 x데이터로 가져왔습니다.
제가 설명이 부족한 부분이 있던것같아 임계값을 올리는 부분 전 단계를 가져왔습니다.
제가 짠 코드는 위 코드이고, 결과는 아래와 같습니다.
x = df[['FBS', 'HBA1C', 'BS']]
y = df['DM_DX_YN']
X_train, X_test, y_train, y_test = train_test_split(x,y,test_size = 0.2, random_state=121)
lr_clf = LogisticRegression()
lr_clf.fit(X_train,y_train)
pred = lr_clf.predict(X_test)
confusion = confusion_matrix(y_test, pred)
accuaracy = accuracy_score(y_test, pred)
precision = precision_score(y_test, pred)
recall = recall_score(y_test, pred)
print('오차 행렬')
print(confusion)
print('정확도 : {0:.4f} 재현율 : {0:.4f} 정밀도 : {0:.4f}'.format(accuracy, precision, recall))
pred_proba = lr_clf.predict_proba(X_test)
pred = lr_clf.predict(X_test)
print('pred proba() 결과 Shape: : {0}'.format(pred_proba.shape))
print('pred_proba() array에서 앞 3개만 샘플로 추출 \n:', pred_proba[:3])
pred_proba_result = np.concatenate([pred_proba, pred.reshape(-1,1)], axis =1)
print('두 개의 class 중에서 더 큰 확률을 클래스 값으로 예측 \n', pred_proba_result[:3])
from sklearn.preprocessing import Binarizer
custom_threshold = 0.5
pred_proba_1 = pred_proba[:, 1].reshape(-1,1)
binarizer = Binarizer(threshold = custom_threshold).fit(pred_proba_1)
custom_predict = binarizer.transform(pred_proba_1)
confusion = confusion_matrix(y_test, custom_predict)
accuaracy = accuracy_score(y_test, custom_predict)
precision = precision_score(y_test, custom_predict)
recall = recall_score(y_test, custom_predict)
print('오차 행렬')
print(confusion)
print('정확도 : {0:.4f} 재현율 : {0:.4f} 정밀도 : {0:.4f}'.format(accuracy, precision, recall))
# 결과
오차 행렬
[[30 2]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
pred proba() 결과 Shape: : (48, 2)
pred_proba() array에서 앞 3개만 샘플로 추출
: [[0.97882766 0.02117234]
[0.84113331 0.15886669]
[0.85791886 0.14208114]]
두 개의 class 중에서 더 큰 확률을 클래스 값으로 예측
[[0.97882766 0.02117234 0. ]
[0.84113331 0.15886669 0. ]
[0.85791886 0.14208114 0. ]]
오차 행렬
[[30 2]
[ 1 15]]
정확도 : 0.8590 재현율 : 0.8590 정밀도 : 0.8590
0
안녕하십니까
제가 작성하신 코드를 안봐서 원인은 잘모르겠지만.....
뭔가 코드 중에 임계값 변경이 제대로 적용이안된것 같습니다
다시한번 해당 부분을 살펴보시고 그래도 안되면 제가 살펴볼수 있는 수준이 되도록 해당 코드를 올려주십시요
모델 서빙과 관련된 강좌가 출시되는지 질문드립니다.
0
50
2
안녕하세요 열심히 수강중인 학생입니다
0
86
2
정수 인덱싱
0
86
2
넘파이 오류
0
108
2
11강 numpy의 axis 축 질문 드립니다.
0
106
2
Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.
0
92
2
Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.
0
76
2
타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.
0
83
2
타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.
0
73
2
5강 강의 오류가 있어요.
0
90
1
실무에서 LTV 관련 모델 선택 질문입니다!
0
81
2
14강 강의 듣는중에 궁금한게 있어서 질문합니다~
0
75
3
파이썬 다운그레이 후 사이킷런 재설치
0
128
2
좋은 강의 감사합니다.
0
79
2
scoring 함수 음수값
0
72
2
6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?
0
108
2
분류 평가 정확도 예측
0
87
2
안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.
0
114
1
카카오톡 채널 있나요
0
117
1
혹시 강의에서 사용하시는 ppt 받을 수 있는건가요
0
193
2
pca 스케일링 관련하여 질문드립니다.
0
109
2
주피터 대신 구글 코랩
0
184
2
강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?
0
155
2
실루엣 스코어..
0
91
2





