# --- Import Required Libraries --- import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.datasets import load_iris from sklearn.cluster import KMeans # --- Load the Iris Dataset --- data = load_iris() X = pd.DataFrame(data.data, columns=data.feature_names) # --- Apply K-Means Clustering --- kmeans = KMeans(n_clusters=3, random_state=42) kmeans.fit(X) # --- Add Predicted Cluster Labels to the DataFrame --- X['Cluster'] = kmeans.labels_ # --- Add Actual Species Names for Comparison --- X['Actual'] = [data.target_names[i] for i in data.target] # --- Display the First Few Rows of the Dataset --- print("Sample of clustered data:") print(X.head()) print("\nCluster Centers:") print(kmeans.cluster_centers_) # --- Visualization 1: K-Means Clusters --- plt.figure(figsize=(8, 6)) sns.scatterplot( data=X, x='petal length (cm)', y='petal width (cm)', hue='Cluster', palette='viridis', s=80 ) plt.title("K-Means Clustering on Iris Dataset", fontsize=14) plt.xlabel("Petal Length (cm)") plt.ylabel("Petal Width (cm)") plt.legend(title="Cluster", loc="upper left") plt.show() # --- Visualization 2: Actual Species --- plt.figure(figsize=(8, 6)) sns.scatterplot( data=X, x='petal length (cm)', y='petal width (cm)', hue='Actual', palette='Set2', s=80 ) plt.title("Actual Iris Species", fontsize=14) plt.xlabel("Petal Length (cm)") plt.ylabel("Petal Width (cm)") plt.legend(title="Species", loc="upper left") plt.show() __ __