9

import scipy.io, numpy as np, matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
d = scipy.io.loadmat('olivettifaces.mat')
X, y = d['faces'].T, np.repeat(np.arange(40), 10)
Xt, Xs, yt, ys = train_test_split(X, y, test_size=0.3, stratify=y, random_state=42)
m = GaussianNB().fit(Xt, yt)
yp = m.predict(Xs)
print("Acc: %.2f%%" % (accuracy_score(ys, yp) * 100))
i = np.random.choice(len(Xs), 20, replace=False)
imgs = Xs[i].reshape(-1, 64, 64).transpose(0, 2, 1)
plt.figure(figsize=(12,6))
for j in range(20):
    plt.subplot(4, 5, j+1)
    plt.imshow(imgs[j], cmap='gray')
    plt.title(f"T:{ys[i[j]]}, P:{yp[i[j]]}", fontsize=8)
    plt.axis('off')
plt.tight_layout(); plt.show()



#we need to upload olivettiface dataset

Comments

Popular posts from this blog

7

10