import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score

# Step 1: Load the dataset
df = pd.read_csv("customers_churn.csv")
print("Original Dataset:")
print(df.head())

# Step 2: Prepare the data
# Fill missing values
df['age'] = df['age'].fillna(df['age'].mean())
df['income'] = df['income'].fillna(df['income'].mean())
df['purchases'] = df['purchases'].fillna(df['purchases'].mean())

# Encode churn
le = LabelEncoder()
df['churn'] = le.fit_transform(df['churn'])

# Step 3: Split the data
X = df[['age', 'income', 'purchases']]
y = df['churn']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 4: Train Logistic Regression
model = LogisticRegression(random_state=42)
model.fit(X_train, y_train)

# Step 5: Predict and evaluate
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("\nAccuracy:", accuracy)