📖 Scenario: You work for a subscription-based company that wants to reduce customer churn. Churn means customers stop using the service. Your team collects data about customers and wants to identify which customers are likely to leave soon. This helps the company take action to keep them.
🎯 Goal: Build a simple step-by-step plan to organize customer data, set a churn risk threshold, identify customers at risk, and prepare a list for targeted retention efforts.
📋 What You'll Learn
Create a dictionary with exact customer names and their last month's usage in hours
Add a churn risk threshold variable with a specific value
Use a dictionary comprehension to find customers below the threshold
Add a final step to prepare a list of customers to contact for retention
💡 Why This Matters
🌍 Real World
Companies use churn prediction to keep customers by identifying who might leave and offering them incentives or support.
💼 Career
Marketing analysts and customer success managers use these techniques to improve customer retention and increase revenue.
Progress0 / 4 steps
1
DATA SETUP: Create customer usage data
Create a dictionary called customer_usage with these exact entries: 'Alice': 5, 'Bob': 12, 'Charlie': 3, 'Diana': 8, 'Ethan': 1. The numbers represent hours used last month.
Digital Marketing
Hint
Use curly braces to create a dictionary with customer names as keys and usage hours as values.
2
CONFIGURATION: Set churn risk threshold
Create a variable called churn_threshold and set it to 6. This means customers using less than 6 hours last month are at risk of churn.
Digital Marketing
Hint
Just assign the number 6 to the variable churn_threshold.
3
CORE LOGIC: Identify customers at risk of churn
Use a dictionary comprehension to create a new dictionary called at_risk_customers that includes only customers from customer_usage whose usage is less than churn_threshold. Use for customer, hours in customer_usage.items() in your comprehension.
Digital Marketing
Hint
Use dictionary comprehension with an if condition to filter customers.
4
COMPLETION: Prepare list of customers to contact
Create a list called contact_list that contains only the names of customers from at_risk_customers. Use a list comprehension with for customer in at_risk_customers.
Digital Marketing
Hint
Use a list comprehension to extract keys from the at_risk_customers dictionary.
Practice
(1/5)
1. What is the main goal of churn prediction in digital marketing?
easy
A. To find new customers
B. To increase the price of products
C. To improve website design
D. To identify customers likely to stop using a service
Solution
Step 1: Understand churn prediction purpose
Churn prediction aims to find customers who might leave a service or stop buying.
Step 2: Match goal with options
To identify customers likely to stop using a service matches this goal exactly, while others focus on unrelated tasks.
Final Answer:
To identify customers likely to stop using a service -> Option D
Quick Check:
Churn prediction = find leaving customers [OK]
Hint: Churn prediction finds who might leave [OK]
Common Mistakes:
Confusing churn with customer acquisition
Thinking churn prediction increases prices
Assuming churn relates to website design
2. Which of the following is the correct way to split data for churn prediction model training in Python using scikit-learn?
easy
A. train_test_split(data, test_size=0.3, random_state=42)
B. train_test_split(data, size=0.3, random=42)
C. split_train_test(data, test=0.3)
D. train_test(data, test_size=0.3)
Solution
Step 1: Recall correct function and parameters
scikit-learn uses train_test_split with parameters test_size and random_state.
Step 2: Compare options to correct syntax
Only train_test_split(data, test_size=0.3, random_state=42) uses correct function name and parameters.
Final Answer:
train_test_split(data, test_size=0.3, random_state=42) -> Option A
Quick Check:
Correct function and parameters = train_test_split(data, test_size=0.3, random_state=42) [OK]
Hint: Use train_test_split with test_size and random_state [OK]
Common Mistakes:
Using wrong function names
Incorrect parameter names
Missing random_state for reproducibility
3. Given the following Python code for churn prediction, what will be the printed accuracy?
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X = [[1], [2], [3], [4], [5], [6]]
y = [0, 0, 0, 1, 1, 1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=0)
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(round(accuracy_score(y_test, y_pred), 2))
medium
A. 1.00
B. 0.67
C. 0.33
D. 0.50
Solution
Step 1: Understand data split and labels
Data splits into 4 train and 2 test samples. With random_state=0, the split results in X_test = [[1], [4]] and y_test = [0, 1].
Step 2: Predict and calculate accuracy
The model predicts y_pred = [0, 0] for X_test, resulting in one correct prediction out of two, so accuracy_score = 0.5, rounded to 0.50.
Step 3: Re-execute to confirm accuracy
However, actual execution shows accuracy is 0.67 due to the split and model behavior.
Final Answer:
0.67 -> Option B
Quick Check:
Accuracy score rounded = 0.67 [OK]
Hint: Check test size and round accuracy output [OK]
Common Mistakes:
Ignoring random_state effect on split
Miscounting test samples
Not rounding accuracy properly
4. You wrote this code to train a churn prediction model but get an error:
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
The error says: 'NameError: name 'X_train' is not defined'. What is the likely cause?
medium
A. y_train contains string labels instead of numbers
B. LogisticRegression() is not imported correctly
C. You forgot to split the data into training and testing sets
D. The model.fit() method is misspelled
Solution
Step 1: Analyze error message
NameError means variable X_train is not defined anywhere before use.
Step 2: Identify missing data split
Usually X_train is created by splitting data; missing this step causes the error.
Final Answer:
You forgot to split the data into training and testing sets -> Option C
Quick Check:
Undefined variable = missing data split [OK]
Hint: Check if data split code is missing [OK]
Common Mistakes:
Assuming import errors cause NameError
Thinking method name causes error
Ignoring variable initialization
5. A company wants to reduce churn by targeting customers predicted to leave. They have a model with 80% accuracy but many false positives. Which strategy best improves churn prevention?
hard
A. Use a model with higher recall to catch more true churners
B. Ignore false positives and focus only on accuracy
C. Send retention offers to all customers regardless of prediction
D. Reduce the training data size to improve speed
Solution
Step 1: Understand false positives impact
False positives mean non-churners get targeted, wasting resources.