import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Sample data
data = pd.DataFrame({
'color': ['red', 'blue', 'green', 'blue', 'red', 'green', 'red', 'blue'],
'city': ['NY', 'LA', 'NY', 'LA', 'NY', 'LA', 'NY', 'LA'],
'age': [25, 32, 47, 51, 23, 43, 36, 29],
'bought': [1, 0, 1, 0, 1, 0, 1, 0]
})
# Split features and target
X = data[['color', 'city', 'age']]
y = data['bought']
# Split train and validation
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.25, random_state=42)
# One-hot encode categorical variables
encoder = OneHotEncoder(sparse=False, drop='first')
X_train_cat = encoder.fit_transform(X_train[['color', 'city']])
X_val_cat = encoder.transform(X_val[['color', 'city']])
# Combine encoded categorical with numerical
import numpy as np
X_train_final = np.hstack([X_train_cat, X_train[['age']].values])
X_val_final = np.hstack([X_val_cat, X_val[['age']].values])
# Train logistic regression
model = LogisticRegression(max_iter=1000)
model.fit(X_train_final, y_train)
# Predict and evaluate
train_preds = model.predict(X_train_final)
val_preds = model.predict(X_val_final)
train_acc = accuracy_score(y_train, train_preds) * 100
val_acc = accuracy_score(y_val, val_preds) * 100
print(f'Training accuracy: {train_acc:.2f}%')
print(f'Validation accuracy: {val_acc:.2f}%')