import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from imblearn.over_sampling import SMOTE

churnData = pd.read_csv('Customer-Churn.csv')
churnData['TotalCharges']  = pd.to_numeric(churnData['TotalCharges'], errors='coerce')
churnData['TotalCharges'] = churnData['TotalCharges'].fillna(np.mean(churnData['TotalCharges']))

smote = SMOTE()
X = churnData[['tenure', 'SeniorCitizen','MonthlyCharges', 'TotalCharges']]
transformer = StandardScaler().fit(X)
X = transformer.transform(X)
y = churnData['Churn']
X_sm, y_sm = smote.fit_resample(X, y)

X_train, X_test, y_train, y_test = train_test_split(X_sm, y_sm, test_size=0.33)
classification_model1 = LogisticRegression(random_state=0, solver='lbfgs', multi_class='ovr')
classification_model2 = DecisionTreeClassifier()

model_pipeline = [classification_model1, classification_model2]
model_names = ['Logistic Regression', 'Decision Tree Classifier']
scores = {}
i=0

for model in model_pipeline:
    mean_score = np.mean(cross_val_score(model, X_train, y_train, cv=10))
    scores[model_names[i]] = mean_score
    i = i+1

print(scores)

{'Logistic Regression': 0.7341731435391379, 'Decision Tree Classifier': 0.7536386923994993}