from sklearn.cluster import KMeans from sklearn.mixture import GaussianMixture import sklearn.metrics as metrics import pandas as pd import numpy as np import matplotlib.pyplot as plt # Load dataset dataset = pd.read_csv('iris.csv') X = dataset.iloc[:, :-1] y = {'Setosa': 0, 'Versicolor': 1, 'Virginica': 2}[dataset.iloc[:, -1]] # Visualize real data plt.scatter(X.Petal_Length, X.Petal_Width, c=np.array(['red', 'lime', 'black'])[y]) plt.title('Real') plt.show() # Gaussian Mixture Model (GMM) gmm = GaussianMixture(n_components=3, random_state=0).fit(X) y_cluster_gmm = gmm.predict(X) # Visualize GMM classification plt.scatter(X.Petal_Length, X.Petal_Width, c=np.array(['red', 'lime', 'black'])[y_cluster_gmm]) plt.title('GMM Classification') plt.show() # Print accuracy and confusion matrix print('The accuracy score of EM:', metrics.accuracy_score(y, y_cluster_gmm)) print('The Confusion matrix of EM:\n', metrics.confusion_matrix(y, y_cluster_gmm))