# Human Understandable

## One Sentence Description

K-means is an unsupervised machine learning algorithm used to partition data into distinct clusters based on their similarity.

### Key Essence

Partitioning data into k clusters based on similarity.

### Field

Machine Learning –> Unsupervised Learning –> Clustering

### Advantage

K-means is simple, efficient, and scalable, making it suitable for large datasets and applications requiring real-time processing.

### Core Principle

K-means works by initializing k centroids randomly, assigning each data point to the closest centroid, updating the centroids as the mean of the points in each cluster, and repeating the process until convergence or a maximum number of iterations is reached.

### Detailed Explanation

K-means is a popular unsupervised learning algorithm used for clustering data into groups based on their similarity. It aims to partition the data into k clusters, where each data point belongs to the cluster with the nearest mean (centroid). The algorithm iteratively assigns each data point to the closest centroid and updates the centroids until convergence or a maximum number of iterations is reached. K-means is widely used in various applications, such as image segmentation, anomaly detection, and document clustering.

# Human Runnable

```
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# Generate synthetic data
data, _ = make_blobs(n_samples=300, centers=4, random_state=42)
# Create a KMeans model with 4 clusters
kmeans = KMeans(n_clusters=4)
# Fit the model to the data
kmeans.fit(data)
# Predict the cluster labels
labels = kmeans.predict(data)
# Plot the data and cluster centroids
plt.scatter(data[:, 0], data[:, 1], c=labels, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', marker='x')
plt.show()
```