import numpy as np
import matplotlib.pyplot as plt
from sklearn_extra.cluster import KMedoids
from sklearn.datasets import make_blobs


# Generate synthetic data
X, _ = make_blobs(n_samples=300, centers=3, cluster_std=1.05, random_state=42)
# Visualizing raw data
plt.scatter(X[:, 0], X[:, 1], s=50, c='gray', alpha=0.5)
plt.title("Raw Data Distribution")
plt.show()

# Apply K-Medoids clustering
k = 3
kmedoids = KMedoids(n_clusters=k, metric='euclidean', random_state=42)
kmedoids.fit(X)
# Get cluster labels and medoids
labels = kmedoids.labels_
medoids = kmedoids.cluster_centers_
# Plot clustered data
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', alpha=0.6)
plt.scatter(medoids[:, 0], medoids[:, 1], c='red', marker='X', s=200, label='Medoids')
plt.title("K-Medoids Clustering")
plt.legend()
plt.show()

