import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler # Sample data data = { 'Feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'Feature2': [5, 8, 12, 15, 18, 24, 28, 30, 34, 40] } df = pd.DataFrame(data) # Standardize the features scaler = StandardScaler() X = scaler.fit_transform(df) # Elbow method for finding optimal k inertia = [] K = range(1, 11) for k in K: kmeans = KMeans(n_clusters=k, random_state=42) kmeans.fit(X) inertia.append(kmeans.inertia_) plt.plot(K, inertia, 'bo-') plt.xlabel('Number of clusters, k') plt.ylabel('Inertia') plt.title('Elbow Method For Optimal k') plt.show() # Apply K-Means with the chosen number of clusters (e.g., 3) kmeans = KMeans(n_clusters=3, random_state=42) df['Cluster'] = kmeans.fit_predict(X) # Visualize the clusters plt.scatter(X[:, 0], X[:, 1], c=df['Cluster'], cmap='viridis', marker='o', edgecolor='k', s=100) plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red', marker='X') # Cluster centers plt.xlabel('Feature1') plt.ylabel('Feature2') plt.title('K-Means Clustering') plt.show()
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter