import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

# 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']

# First split: 70% training, 30% remaining (validation + testing)
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)

# Second split: 15% validation, 15% testing (split the 30% remaining)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

# Step 4: Display the shapes
print("\nTraining set shape:", X_train.shape)
print("Validation set shape:", X_val.shape)
print("Testing set shape:", X_test.shape)

