K-Means Clustering рдПрдХ Unsupervised Learning Algorithm рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ k рдЕрд▓рдЧ-рдЕрд▓рдЧ clusters рдореЗрдВ рдмрд╛рдВрдЯрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╣рд░ cluster рдореЗрдВ рдбрд╛рд▓реЗ рдЧрдП рдбреЗрдЯрд╛ рдЖрдкрд╕ рдореЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг:
рдЖрдк рдПрдХ рджреБрдХрд╛рди рдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЙрдирдХреЗ рдЦрд╝рд░реАрджрдиреЗ рдХреА рдЖрджрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 3 рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ тАФ High, Medium, рдФрд░ Low spendersред
ЁЯФ╢ рдЙрджреНрджреЗрд╢реНрдп:
K-Means рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ:
Data Points рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд╛рдВрдЯрдирд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ Cluster рдХрд╛ тАЬCentroidтАЭ рдЕрдкрдиреЗ Points рд╕реЗ рдиреНрдпреВрдирддрдо рджреВрд░реА рдкрд░ рд╣реЛред
ЁЯУР Mathematical Objective:
K-Means рдХрд╛ Loss Function (Inertia) рд╣реЛрддрд╛ рд╣реИ:

рдЬрд╣рд╛рдБ:

ЁЯза Algorithm Steps:
- kkk initial centroids randomly рдЪреБрдиреЗрдВ
- рд╣рд░ point рдХреЛ рд╕рдмрд╕реЗ рдкрд╛рд╕ рд╡рд╛рд▓реЗ centroid рдХреЗ cluster рдореЗрдВ assign рдХрд░реЗрдВ
- рд╣рд░ cluster рдХрд╛ рдирдпрд╛ centroid calculate рдХрд░реЗрдВ
- Step 2 рдФрд░ 3 рдХреЛ рддрдм рддрдХ рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ cluster assignment stable рдирд╛ рд╣реЛ рдЬрд╛рдП
тЬЕ Python Code (with Visualization):
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np
# Dummy Data
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
# KMeans Model
model = KMeans(n_clusters=2, random_state=0)
model.fit(X)
# Output
print("Labels:", model.labels_) # Cluster assignments
print("Centroids:", model.cluster_centers_) # Cluster centers
# Visualization
plt.scatter(X[:, 0], X[:, 1], c=model.labels_, cmap='viridis')
plt.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:, 1],
c='red', marker='X', s=200, label='Centroids')
plt.title("K-Means Clustering")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.legend()
plt.grid(True)
plt.show()
ЁЯФм Elbow Method (Best k рдХреИрд╕реЗ рдЪреБрдиреЗрдВ?)
Elbow Method рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ clusters рд▓реЗрдиреЗ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА grouping рдорд┐рд▓реЗрдЧреАред
ЁЯУИ Plot Inertia vs k:
inertia = []
K = range(1, 10)
for k in K:
km = KMeans(n_clusters=k)
km.fit(X)
inertia.append(km.inertia_)
plt.plot(K, inertia, marker='o')
plt.xlabel('Number of Clusters k')
plt.ylabel('Inertia (Within Sum of Squares)')
plt.title('Elbow Method for Optimal k')
plt.show()
рдЬрд╣рд╛рдБ graph рдореЗрдВ тАЬelbowтАЭ рдмрдирддрд╛ рд╣реИ тАФ рд╡рд╣реА optimal k рд╣реЛрддрд╛ рд╣реИред
ЁЯФО Real Life Applications:
| Domain | Application Example |
|---|---|
| Marketing | Customer Segmentation |
| Healthcare | Disease pattern clustering |
| Finance | Risk Grouping / Fraud Detection |
| E-commerce | Product Recommendation (user grouping) |
тЪЦя╕П K-Means рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди:
тЬЕ рдлрд╛рдпрджреЗ:
- Simple рдФрд░ Fast
- High-dimensional data рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- Easily scalable
тЭМ рдиреБрдХрд╕рд╛рди:
- kkk рдкрд╣рд▓реЗ рд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- Non-spherical clusters рдХреЛ handle рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛
- Outliers рдкрд░ sensitive рд╣реЛрддрд╛ рд╣реИ
- Local minima рдореЗрдВ рдлрдБрд╕ рд╕рдХрддрд╛ рд╣реИ (initial centroid рдкрд░ рдирд┐рд░реНрднрд░рддрд╛)
ЁЯУК Summary Table:
| Feature | K-Means |
|---|---|
| Type | Unsupervised Clustering |
| Input | Only Features (No Labels) |
| Output | Cluster IDs |
| Distance Metric | Euclidean Distance (Mostly) |
| Speed | Fast |
| Shape Assumption | Spherical Clusters |
ЁЯУЭ Practice Questions:
- K-Means рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
- Loss function J рдХрд╛ рдЕрд░реНрде рдХреНрдпрд╛ рд╣реИ?
- Elbow Method рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ?
- K-Means рдХрдм рдЦрд░рд╛рдм perform рдХрд░рддрд╛ рд╣реИ?
- K-Means clustering рдореЗрдВ initialization рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИ?





