더북(TheBook)

파이썬에서는 다음과 같이 ROC 커브를 구현할 수 있습니다.

 

In [18]:

# 분류 알고리즘과 ROC 커브 라이브러리를 호출합니다
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve
from sklearn.metrics import roc_auc_score

# ROC 커브를 위한 함수를 정의합니다
def plot_roc_curve(fpr, tpr):
    plt.plot(fpr, tpr, color='orange', label='ROC')
    plt.plot([0, 1], [0, 1], color='darkblue', linestyle='--')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver Operating Characteristic (ROC) Curve')
    plt.legend()
    plt.show()

# 샘플 데이터를 1000건 생성합니다
data_X, class_label = make_classification(n_samples=1000, n_classes=2, 
weights=[1,1], random_state=1)

# 임의로 생성된 데이터를 학습과 테스트로 분리합니다
trainX, testX, trainy, testy = train_test_split(data_X, class_label, 
test_size=0.3, random_state=1)

# 학습 데이터를 랜덤포레스트(RandomForest) 모델에 적용합니다
model = RandomForestClassifier()
model.fit(trainX, trainy)

# 테스트 데이터의 확률을 예측합니다
probs = model.predict_proba(testX)

# 포지티브 클래스(positive class)만 유지합니다
# (포지티브 클래스란 모델이 찾고자 하는 클래스를 의미합니다)
probs = probs[:, 1]

# AUC를 계산합니다
auc = roc_auc_score(testy, probs)

# ROC 곡선을 확보합니다
fpr, tpr, thresholds = roc_curve(testy, probs)

# 정의된 함수를 사용하여 ROC 곡선을 생성합니다
fpr, tpr, thresholds = roc_curve(testy, probs)
plot_roc_curve(fpr, tpr)

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.