SKLearn - Understanding Discrepancy Between LogisticRegressionCV classification_report and scores_
You are training and evaluate on the same data.
You should split data to train set(to train) and test set(to evaluate) to get proper results.
Kinda:

decoder.fit(X_train, y_train)
y_hat = decoder.predict(X_test)

print(classification_report(y_test, y_hat))
print(confusion_matrix(y_test, y_hat))