Last active
June 23, 2022 14:51
-
-
Save cohnt/9eef368f58abd25fb37ddd27902f2315 to your computer and use it in GitHub Desktop.
Comparison of k-means, k-medians, and k-medoids clustering on a toy dataset with 2 clusters and an outlier.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
from pyclustering.cluster.kmeans import kmeans, kmeans_visualizer | |
from pyclustering.cluster.kmedians import kmedians | |
from pyclustering.cluster.kmedoids import kmedoids | |
from pyclustering.cluster import cluster_visualizer | |
sample = np.array([ | |
[0, 0], | |
[0, 1], | |
[1, 0], | |
[1, 1], | |
[5, 0], | |
[5, 1], | |
[6, 0], | |
[6, 1], | |
[3, 8] | |
]) | |
initial_centers = [[0.0, 0.0], [5.0, 0.0]] | |
# Create instance of K-Means algorithm with prepared centers. | |
kmeans_instance = kmeans(sample, initial_centers) | |
# Run cluster analysis and obtain results. | |
kmeans_instance.process() | |
clusters = kmeans_instance.get_clusters() | |
final_centers = kmeans_instance.get_centers() | |
# Visualize obtained results | |
kmeans_visualizer.show_clusters(sample, clusters, final_centers) | |
initial_medians = [[0.0, 0.0], [5.0, 0.0]] | |
kmedians_instance = kmedians(sample, initial_medians) | |
# Run cluster analysis and obtain results. | |
kmedians_instance.process() | |
clusters = kmedians_instance.get_clusters() | |
medians = kmedians_instance.get_medians() | |
# Visualize clustering results. | |
visualizer = cluster_visualizer() | |
visualizer.append_clusters(clusters, sample) | |
visualizer.append_cluster(medians, marker='*', markersize=10) | |
visualizer.show() | |
# Set random initial medoids. | |
initial_medoids = [1, 5] | |
# Create instance of K-Medoids algorithm. | |
kmedoids_instance = kmedoids(sample, initial_medoids) | |
# Run cluster analysis and obtain results. | |
kmedoids_instance.process() | |
clusters = kmedoids_instance.get_clusters() | |
medoids = sample[kmedoids_instance.get_medoids()] | |
# Show allocated clusters. | |
print(clusters) | |
# Display clusters. | |
visualizer = cluster_visualizer() | |
visualizer.append_clusters(clusters, sample) | |
visualizer.append_cluster(medoids, marker='*', markersize=10) | |
visualizer.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment