### Story
The specialty café Bean & Bone is launching a bold “Midnight Roast” and wants to send coupons only to people likely to love it. They collected 500 anonymous taste-tester ratings. Your job: build an interpretable logistic-regression model that outputs P(Likes_Coffee = 1) so marketing can target the right customers.
### Data
All synthetic, but realistic.
train.csv – 350 customers (target revealed)
test.csv  – 150 customers (target hidden)
sample_submission.csv

| Column                            | Meaning                   | Type  | Missing    |
| --------------------------------- | ------------------------- | ----- | ---------- |
| Id                                | observation id (index)    | int   | no         |
| Age                               | customer age (years)      | float | **5 %**    |
| Prefer\_Dark\_Chocolate           | 1 = yes                   | int   | no         |
| Usually\_Drinks\_Espresso         | 1 = yes                   | int   | no         |
| Coffee\_Acidity\_Rating           | 1–10 scale                | float | **5 %**    |
| Roast\_Level                      | 1=Light, 2=Medium, 3=Dark | int   | no         |
| Sugar\_Preference                 | grams typically added     | float | **5 %**    |
| Previous\_Dark\_Roast\_Experience | 1 = yes                   | int   | no         |
| Likes\_Coffee                     | target (0/1)              | int   | train only |


### Task
Clean / impute missing values.
Encode categorical variables (Roast_Level).
Train logistic regression (plain, L1, or L2).
Produce predicted probabilities for the 150 test customers.
Share a short kernel showing coefficient interpretation & ROC curve.
### Rules
Only logistic-regression family allowed (no trees, no boosting).
No external data, no target leakage.
Kernel must be public to appear on leaderboard.
### Metric
ROC-AUC (higher is better).
Public / private split: 30 % / 70 % of test rows.

