Skip to main content
Brave Programmer Logo

BraveProgrammer

BraveProgrammer

HomeProjectsBlogsCoursesLessonsAbout

Site footer

BraveProgrammer

Free coding courses, practical tutorials, and real projects from BraveProgrammer. Learn web development with React, Next.js, and TypeScript.

Navigation

  • Home
  • Projects
  • Blogs
  • Courses

Resources

  • About
  • Lessons

© 2026 BraveProgrammer. All rights reserved.

  1. Courses
  2. /
  3. Master Data Science with Python

Lesson 51 of 60 · python

Unsupervised Learning – K‑Means Clustering

Duration: 25 minutes

K‑Means Clustering

K‑Means groups unlabeled data into k clusters by minimizing intra‑cluster variance.

Algorithm steps

  1. Randomly initialize k centroids.
  2. Assign each point to the nearest centroid.
  3. Re‑compute centroids as the mean of assigned points.
  4. Iterate steps 2‑3 until convergence.

Using scikit‑learn

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X_scaled)

df['cluster'] = clusters

Elbow method to find optimal k

inertia = []
K = range(1, 11)
for k in K:
    km = KMeans(n_clusters=k, random_state=42)
    km.fit(X_scaled)
    inertia.append(km.inertia_)

plt.plot(K, inertia, 'bo-')
plt.xlabel('Number of clusters k')
plt.ylabel('Inertia (Sum of squared distances)')
plt.title('Elbow Method')
plt.show()

Visualizing clusters (2‑D using PCA)

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
proj = pca.fit_transform(X_scaled)

plt.scatter(proj[:,0], proj[:,1], c=clusters, cmap='viridis', s=50)
plt.title('K‑Means Clusters (PCA projection)')
plt.show()

Silhouette score (cluster quality)

from sklearn.metrics import silhouette_score
score = silhouette_score(X_scaled, clusters)
print('Silhouette Score:', score)

Limitations

  • Assumes spherical clusters.
  • Sensitive to scaling (hence standardize first).
  • Requires pre‑specifying k.

Info

If the data has varying densities, consider DBSCAN or hierarchical clustering.

Previous: Model Evaluation Metrics for ClassificationNext: Dimensionality Reduction – Principal Component Analysis (PCA)