Skip to content

Instantly share code, notes, and snippets.

@StephenFordham
Last active October 23, 2023 08:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save StephenFordham/bbbe79c54a91f92bc180cc0c4f171dd3 to your computer and use it in GitHub Desktop.
Save StephenFordham/bbbe79c54a91f92bc180cc0c4f171dd3 to your computer and use it in GitHub Desktop.
AUC ROC Skillful model comparison
import matplotlib.pyplot as plt
# ROC and AUC modules
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, roc_auc_score
import seaborn as sns
# generate 2 class dataset
X, y = make_classification(n_samples=1000, n_classes=2, weights=[0.5], random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=2)
no_skill_prob = [0 for val in range(len(y_test))]
model = LogisticRegression(solver='lbfgs')
model.fit(X_train, y_train)
logis_prob = model.predict_proba(X_test)
logis_prob = logis_prob[:, 1]
no_skill_auc = roc_auc_score(y_test, no_skill_prob)
logis_reg_auc = roc_auc_score(y_test, logis_prob)
'No model skill: ROC AUC: {}'.format(no_skill_auc)
# 'No model skill: ROC AUC: 0.5'
'Logistic model skill: ROC AUC: {}'.format(round(logis_reg_auc, 3))
#'Logistic model skill: ROC AUC: 0.903'
no_skill_fpr, no_skill_tpr, _ = roc_curve(y_test, no_skill_prob)
log_res_fpr, log_res_tpr, _ = roc_curve(y_test, logis_prob)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment