import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score, accuracy_score, roc_curve, roc_auc_score
bankloan = pd.read_csv("BANK LOAN.csv")
bankloan.head()
bankloan1 = bankloan.drop(['SN', 'AGE'], axis=1)
bankloan1.head()
bankloan1.info()
X = bankloan1.loc[:, bankloan1.columns != 'DEFAULTER']
y = bankloan1.loc[:, 'DEFAULTER']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=999)
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
X_train
#Model Fitting
NBmodel = GaussianNB()
NBmodel.fit(X_train, y_train)
#Predicted Probabilities
predprob_test = NBmodel.predict_proba(X_test)
predprob_test
#Custom Cutoff Value for Prediction Labels
cutoff = 0.3
pred_test = np.where(predprob_test[:,1] > cutoff, 1, 0)
pred_test
confusion_matrix(y_test, pred_test, labels = [0, 1])
accuracy_score(y_test, pred_test)
precision_score(y_test, pred_test)
recall_score(y_test, pred_test)
#Area under ROC curve
auc = roc_auc_score(y_test, predprob_test[:,1])
print('AUC: %.3f' % auc)
#ROC Curve
NBfpr, NBtpr, thresholds = roc_curve(y_test, predprob_test[:,1])
#plot the roc curve
plt.figure()
lw = 2
plt.plot(NBfpr, NBtpr, color='darkorange', lw=lw, label='ROC curve (area = %0.3f)' % auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.axis('tight')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
