Pgr-9

import scipy.io
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import classification_report, accuracy_score
import matplotlib.pyplot as plt
import warnings

warnings.filterwarnings("ignore")

data = scipy.io.loadmat('olivettifaces.mat')
X = data['faces'].T  # shape (400, 4096)
y = np.repeat(np.arange(40), 10)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42, stratify=y
)

model = GaussianNB()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
print("Classification Report:")
print(report)

n_samples = 20
indices = np.random.choice(len(X_test), n_samples, replace=False)
images = X_test[indices].reshape(n_samples, 64, 64).transpose(0, 2, 1)
true_labels = y_test[indices]
pred_labels = y_pred[indices]

plt.figure(figsize=(12, 6))
for i in range(n_samples):
    plt.subplot(4, 5, i + 1)
    plt.imshow(images[i], cmap='gray')
    plt.title(f"True: {true_labels[i]}, Pred: {pred_labels[i]}", fontsize=8)
    plt.axis('off')

plt.tight_layout()
plt.show()

Comments

Popular posts from this blog

Pgr-1

Pgr-4

Pgr-5