파이썬에서는 다음과 같이 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)