from imblearn.over_sampling import SMOTE
from imblearn.pipeline import Pipeline as ImbPipeline
from scipy.stats import chi2_contingency
from sklearn.compose import ColumnTransformer
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder,OrdinalEncoder,MinMaxScaler
from sklearn.tree import DecisionTreeClassifier
from statsmodels.tsa.seasonal import seasonal_decompose
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
from sklearn.calibration import CalibratedClassifierCV
# Calculando a matriz de confusão
def conf_matrix(y_test,y_pred):
conf_matrix = confusion_matrix(y_test, y_pred)
conf_matrix = conf_matrix.astype('float') / conf_matrix.sum(axis=1)[:, np.newaxis] * 100
# Plotando a matriz de confusão
plt.imshow(conf_matrix, cmap='Blues', interpolation='nearest')
plt.colorbar()
# Adicionando rótulos aos eixos
plt.title('Matriz de Confusão')
plt.xlabel('Previsto')
plt.ylabel('Verdadeiro')
tick_marks = [0, 1]
plt.xticks(tick_marks, ['Não é fraude', 'Fraude'])
plt.yticks(tick_marks, ['Não é fraude', 'Fraude'])
# Adicionando os valores na matriz
for i in range(len(conf_matrix)):
for j in range(len(conf_matrix[i])):
plt.text(j, i, str(conf_matrix[i][j]), ha='center', va='center', color='black')
# Exibindo a matriz de confusão
plt.show()