Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Google Analytics
- 서평단
- tensorflow
- Visualization
- 매틀랩
- Tistory
- SQL
- 티스토리
- Python
- 한빛미디어
- 블로그
- Pandas
- 텐서플로
- 서평
- Linux
- 한빛미디어서평단
- 독후감
- 리눅스
- 시각화
- MATLAB
- 딥러닝
- 통계학
- Blog
- 월간결산
- 파이썬
- MySQL
- 파이썬 시각화
- Ga
- matplotlib
- python visualization
Archives
- Today
- Total
pbj0812의 코딩 일기
[통계학] PYTHON 을 이용한 AUC 계산 본문
0. 목표
- PYTHON을 이용한 AUC 계산
1. 실습
1) library 호출
import pandas as pd
import matplotlib.pyplot as plt
2) 데이터 생성
index = [i for i in range(1, 21)]
label = ['p', 'p', 'n', 'p', 'p', 'p', 'n', 'n', 'p', 'n', 'p', 'n', 'p', 'n', 'n', 'n', 'p', 'n', 'p', 'n']
probability = [0.9, 0.8, 0.7, 0.6, 0.55, 0.54, 0.53, 0.52, 0.51, 0.505, 0.4, 0.39, 0.38, 0.37, 0.36, 0.35, 0.34, 0.33, 0.3, 0.1]
3) 데이터 프레임화
data = pd.DataFrame({'index' : index, 'label' : label, 'probability' : probability})
- 결과
4) ROC 계산 모듈
# inp1 : data
def ROC(inp1):
FPR = []
TPR = []
P = len(inp1[inp1['label'] == 'p'])
N = len(inp1[inp1['label'] == 'n'])
for i in inp1['probability']:
tmp_p = data[data['probability'] >= i]
TP = len(tmp_p[tmp_p['label'] == 'p'])
tmp_TPR = TP/P
tmp_n = data[data['probability'] >= i]
FP = len(tmp_n[tmp_n['label'] == 'n'])
tmp_FPR = FP/N
TPR.append(tmp_TPR)
FPR.append(tmp_FPR)
return TPR, FPR
5) ROC 계산
TPR, FPR = ROC(data)
6) AUC 계산
- 지점마다 사다리꼴의 넓이를 계산하여 더해주는 형식
AUC_TPR = [0] + TPR
AUC_FPR = [0] + FPR
AUC = 0
for i in range(1, len(AUC_TPR)):
tmp_AUC = (AUC_TPR[i - 1] + AUC_TPR[i]) * (AUC_FPR[i] - AUC_FPR[i - 1]) / 2
AUC += tmp_AUC
- 결과 : 0.6799999999999999
print(AUC)
7) 그래프 생성
fig = plt.figure()
fig.set_size_inches(15, 15)
plt.plot(FPR, TPR)
plt.fill_between(FPR, TPR, 0, facecolor="red", alpha=0.2)
plt.xlabel("FPR", fontsize = 24)
plt.ylabel("TPR", fontsize = 24)
for i in range(len(data['probability'])):
plt.text(FPR[i], TPR[i], data['probability'][i], fontsize = 18)
# AUC 필기
plt.text(FPR[-1]/2, TPR[-1]/2, 'AUC : ' + str(AUC), fontsize = 24)
2. 참고
'Science > 통계학' 카테고리의 다른 글
[통계학] PYTHON 을 통한 AUPRC 구현 및 sklearn 과 비교 (3) | 2020.11.12 |
---|---|
[통계학] PYTHON 을 통한 P-R 곡선 구현 (0) | 2020.11.12 |
[통계학] ROC 곡선 그리기 (0) | 2020.11.09 |
[통계학] PYTHON을 이용한 RMSE, MAPE 구현 및 데이터에 따른 결과 비교 (0) | 2020.11.02 |
[통계학] python을 이용한 최소제곱법과 경사하강법 구현 (0) | 2020.10.04 |
Comments