import pandas as pd
bankloan = pd.read_csv("BANK LOAN.csv")
bankloan.head()
bankloan.info()
bankloan['AGE'] = bankloan['AGE'].astype('category')
import statsmodels.formula.api as smf
riskmodel = smf.logit(formula = 'DEFAULTER ~ AGE + EMPLOY + ADDRESS + DEBTINC + CREDDEBT + OTHDEBT', data = bankloan).fit()
riskmodel.pvalues
riskmodel.summary()
import numpy as np
conf = riskmodel.conf_int()
conf['OR'] = riskmodel.params
conf.columns = ['2.5%', '97.5%', 'OR']
print(np.exp(conf))
bankloan = bankloan.assign(pred = pd.Series(riskmodel.predict()))
bankloan.head()
from sklearn.metrics import confusion_matrix
predicted_values1 = riskmodel.predict()
threshold = 0.3
predicted_class1 = np.zeros(predicted_values1.shape)
predicted_class1[predicted_values1 >= threshold] = 1
cm1 = confusion_matrix(bankloan['DEFAULTER'], predicted_class1)
print(f'Confusion Matrix: \n {cm1}')
sensitivity = cm1[1,1] / (cm1[1,0] + cm1[1,1])
print(f"Sensitivity: {sensitivity}")
specificity = cm1[0,0] / (cm1[0,0] + cm1[0,1])
print(f"Specificity: {specificity}")
from sklearn.metrics import classification_report
print(classification_report(bankloan['DEFAULTER'], predicted_class1))
from sklearn.metrics import roc_curve, auc
bankloan = bankloan.assign(pred = riskmodel.predict())
fpr, tpr, thresholds = roc_curve(bankloan['DEFAULTER'], bankloan['pred'])
ruc_auc = auc(fpr, tpr)
import matplotlib.pyplot as plt
plt.figure()
lw = 2
plt.plot(fpr, tpr, color = 'darkorange', lw = lw, label = 'ROC curve (area = %0.2f)' % ruc_auc)
plt.plot([0, 1], [0, 1], color = "navy", lw = lw, linestyle="--")
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("Receiver operating characteristic")
plt.legend(loc="lower right")
plt.show()
print(f"Area under the ROC curve: {ruc_auc}")
