10

 import numpy as np 

import pandas as pd 

import matplotlib.pyplot as plt 

import seaborn as sns 

from sklearn.datasets import load_breast_cancer 

from sklearn.cluster import KMeans 

from sklearn.preprocessing import StandardScaler 

from sklearn.decomposition import PCA 

from sklearn.metrics import confusion_matrix, classification_report 

# Load dataset 

data = load_breast_cancer() 

X, y = data.data, data.target 

# Standardize features 

X_scaled = StandardScaler().fit_transform(X) 

# Apply KMeans clustering 

kmeans = KMeans(n_clusters=2, random_state=42, n_init=10) 

y_kmeans = kmeans.fit_predict(X_scaled) 

# Evaluate clustering 

print("Confusion Matrix:") 

print(confusion_matrix(y, y_kmeans)) 

print("\nClassification Report:") 

print(classification_report(y, y_kmeans)) 

# Reduce dimensions for visualization 

pca = PCA(n_components=2) 

X_pca = pca.fit_transform(X_scaled) 

# Prepare DataFrame for plotting 

df = pd.DataFrame(X_pca, columns=['PC1', 'PC2']) 

df['Cluster'] = y_kmeans 

df['True Label'] = y 

# Plot: K-Means Clusters 

plt.figure(figsize=(8, 6)) 

sns.scatterplot(data=df, x='PC1', y='PC2', hue='Cluster', 

palette='Set1', s=100, edgecolor='black', alpha=0.7) 

plt.title('K-Means Clustering') 

plt.xlabel('PC1') 

plt.ylabel('PC2') 

plt.legend(title="Cluster") 

plt.show() 

# Plot: True Labels 

plt.figure(figsize=(8, 6)) 

sns.scatterplot(data=df, x='PC1', y='PC2', hue='True Label', 

palette='coolwarm', s=100, edgecolor='black', alpha=0.7) 

plt.title('True Labels') 

plt.xlabel('PC1') 

plt.ylabel('PC2') 

plt.legend(title="True Label") 

plt.show() 

# Plot: Clusters with Centroids 

plt.figure(figsize=(8, 6)) 

sns.scatterplot(data=df, x='PC1', y='PC2', hue='Cluster', 

palette='Set1', s=100, edgecolor='black', alpha=0.7) 

centers = pca.transform(kmeans.cluster_centers_) 

plt.scatter(centers[:, 0], centers[:, 1], s=200, c='red', marker='X', 

label='Centroids') 

plt.title('K-Means Clusters with Centroids') 

plt.xlabel('PC1') 

plt.ylabel('PC2') 

plt.legend(title="Cluster") 

plt.show()

Comments

Popular posts from this blog

2

3

1