Bird
Raised Fist0
Data Analysis Pythondata~20 mins

Customer segmentation pattern in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Customer Segmentation Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of KMeans clustering labels
Given the following code that performs KMeans clustering on customer data, what will be the output of print(labels)?
Data Analysis Python
from sklearn.cluster import KMeans
import numpy as np

X = np.array([[5, 200], [6, 220], [7, 210], [20, 800], [22, 850], [21, 830]])
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
print(labels)
A[1 1 1 0 0 0]
B[0 0 0 1 1 1]
C[0 1 0 1 0 1]
D[1 0 1 0 1 0]
Attempts:
2 left
💡 Hint
Think about how KMeans groups similar points based on their features.
❓ data_output
intermediate
2:00remaining
Number of customers in each segment
After segmenting customers using KMeans with 3 clusters, what is the count of customers in each cluster?
Data Analysis Python
import pandas as pd
from sklearn.cluster import KMeans

customers = pd.DataFrame({
    'Age': [25, 45, 35, 23, 52, 40, 60, 48],
    'Annual_Spend': [500, 1500, 800, 450, 2000, 1200, 2200, 1600]
})
kmeans = KMeans(n_clusters=3, random_state=0)
customers['Segment'] = kmeans.fit_predict(customers)
counts = customers['Segment'].value_counts().sort_index()
print(counts)
A
0    3
1    2
2    3
Name: Segment, dtype: int64
B
0    2
1    3
2    3
Name: Segment, dtype: int64
C
0    3
1    3
2    2
Name: Segment, dtype: int64
D
0    4
1    2
2    2
Name: Segment, dtype: int64
Attempts:
2 left
💡 Hint
Look at how many customers fall into each cluster label after prediction.
❓ visualization
advanced
3:00remaining
Identify the correct scatter plot of customer segments
Which scatter plot correctly shows customer segments after applying KMeans clustering on Age vs Annual Spend?
Data Analysis Python
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans

customers = pd.DataFrame({
    'Age': [22, 25, 47, 52, 46, 56, 55, 60],
    'Annual_Spend': [400, 500, 1500, 1600, 1400, 1700, 1800, 1900]
})
kmeans = KMeans(n_clusters=2, random_state=1)
customers['Segment'] = kmeans.fit_predict(customers)

plt.figure(figsize=(6,4))
plt.scatter(customers['Age'], customers['Annual_Spend'], c=customers['Segment'], cmap='viridis')
plt.xlabel('Age')
plt.ylabel('Annual Spend')
plt.title('Customer Segments')
plt.show()
AScatter plot showing random color distribution with no clear groups.
BScatter plot with all points in one color, no segmentation visible.
CScatter plot with two distinct groups: younger customers with lower spend and older customers with higher spend.
DScatter plot with three overlapping clusters mixed in colors.
Attempts:
2 left
💡 Hint
KMeans groups customers by similarity, so expect clear clusters.
🧠 Conceptual
advanced
1:30remaining
Understanding silhouette score in customer segmentation
What does a silhouette score close to 1 indicate about the customer segments created by a clustering algorithm?
AThe clustering algorithm failed to converge.
BClusters overlap heavily and customers are poorly matched to clusters.
CThere are too many clusters causing overfitting.
DClusters are well separated and customers are well matched to their own cluster.
Attempts:
2 left
💡 Hint
Silhouette score measures how similar an object is to its own cluster compared to other clusters.
🔧 Debug
expert
2:00remaining
Identify the error in customer segmentation code
What error will this code raise when trying to segment customers using KMeans?
Data Analysis Python
from sklearn.cluster import KMeans
import pandas as pd

customers = pd.DataFrame({
    'Age': [30, 40, 50],
    'Annual_Spend': [1000, 1500, 2000]
})

kmeans = KMeans(n_clusters=4)
kmeans.fit(customers)
labels = kmeans.labels_
print(labels)
AValueError: Number of clusters (4) cannot be greater than number of samples (3).
BAttributeError: 'KMeans' object has no attribute 'labels_'
CTypeError: fit() missing 1 required positional argument
DNo error, prints labels array of length 3.
Attempts:
2 left
💡 Hint
Check if the number of clusters is valid given the data size.

Practice

(1/5)
1. What is the main goal of customer segmentation in data science?
easy
A. To group customers based on similar characteristics
B. To delete customer data from the database
C. To increase the number of customers randomly
D. To create a single profile for all customers

Solution

  1. Step 1: Understand the purpose of segmentation

    Customer segmentation means dividing customers into groups with similar traits.
  2. Step 2: Identify the correct goal

    The goal is to group customers, not delete or randomly increase them.
  3. Final Answer:

    To group customers based on similar characteristics -> Option A
  4. Quick Check:

    Segmentation = Grouping customers [OK]
Hint: Segmentation means grouping similar customers [OK]
Common Mistakes:
  • Thinking segmentation deletes data
  • Confusing segmentation with random customer increase
  • Assuming segmentation creates one big group
2. Which Python library is commonly used for KMeans clustering in customer segmentation?
easy
A. scikit-learn
B. matplotlib
C. pandas
D. numpy

Solution

  1. Step 1: Recall common libraries for clustering

    KMeans clustering is part of machine learning, often done with scikit-learn.
  2. Step 2: Match library to KMeans

    scikit-learn provides KMeans; matplotlib is for plotting, pandas for data frames, numpy for arrays.
  3. Final Answer:

    scikit-learn -> Option A
  4. Quick Check:

    KMeans = scikit-learn [OK]
Hint: KMeans is in scikit-learn library [OK]
Common Mistakes:
  • Choosing matplotlib for clustering
  • Confusing pandas with clustering tools
  • Selecting numpy instead of scikit-learn
3. What will be the output of this code snippet?
import pandas as pd
from sklearn.cluster import KMeans

data = pd.DataFrame({'Age': [25, 45, 35, 50], 'Income': [50000, 80000, 60000, 90000]})
model = KMeans(n_clusters=2, random_state=0)
model.fit(data)
print(model.labels_)
medium
A. [1 0 1 0]
B. [1 1 0 0]
C. [0 0 1 1]
D. [0 1 0 1]

Solution

  1. Step 1: Understand KMeans clustering with 2 clusters

    The model groups similar rows into 2 clusters based on Age and Income.
  2. Step 2: Predict cluster labels for each row

    Rows 0 and 2 are younger with lower income, likely cluster 1; rows 1 and 3 older with higher income, cluster 0.
  3. Final Answer:

    [1 1 0 0] -> Option B
  4. Quick Check:

    Similar customers grouped as [1 1 0 0] [OK]
Hint: Younger & lower income cluster 1, older & higher income cluster 0 [OK]
Common Mistakes:
  • Assuming clusters are assigned randomly
  • Mixing cluster labels order
  • Forgetting random_state fixes output
4. Identify the error in this customer segmentation code:
from sklearn.cluster import KMeans
import pandas as pd

data = pd.DataFrame({'Age': [22, 34, 29], 'Income': [40000, 60000, 50000]})
model = KMeans(n_clusters=3)
model.fit(data)
print(model.labels_)
medium
A. KMeans requires data to be normalized before fitting
B. DataFrame columns should be strings, not numbers
C. No error; code runs correctly and prints labels
D. Missing random_state parameter in KMeans

Solution

  1. Step 1: Check code syntax and usage

    Code imports libraries, creates DataFrame, fits KMeans with 3 clusters, and prints labels.
  2. Step 2: Verify if code runs without error

    random_state is optional; columns as strings are correct; normalization is recommended but not required.
  3. Final Answer:

    No error; code runs correctly and prints labels -> Option C
  4. Quick Check:

    Code runs fine without random_state [OK]
Hint: random_state optional; code runs if syntax correct [OK]
Common Mistakes:
  • Thinking random_state is mandatory
  • Believing normalization is required to run
  • Confusing column names with data types
5. You have customer data with Age, Income, and Spending Score. You want to create 3 segments using KMeans. Which steps should you follow to prepare and segment the data correctly?
hard
A. Remove Age column, set n_clusters=1, fit KMeans, ignore labels
B. Convert numeric data to strings, set n_clusters=3, fit KMeans, assign labels
C. Use raw data without scaling, set n_clusters=5, fit KMeans, assign labels
D. Normalize numeric columns, choose n_clusters=3, fit KMeans, assign labels to customers

Solution

  1. Step 1: Prepare data by normalizing numeric columns

    Scaling ensures Age, Income, and Spending Score have equal influence on clustering.
  2. Step 2: Set number of clusters and fit KMeans

    Choose n_clusters=3 as desired segments, then fit model and assign labels.
  3. Final Answer:

    Normalize numeric columns, choose n_clusters=3, fit KMeans, assign labels to customers -> Option D
  4. Quick Check:

    Scaling + correct clusters = proper segmentation [OK]
Hint: Always scale numeric data before KMeans clustering [OK]
Common Mistakes:
  • Skipping normalization causing biased clusters
  • Choosing wrong number of clusters
  • Using non-numeric data without conversion
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard