import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import fetch_olivetti_faces from sklearn.model_selection import train_test_split, cross_val_score from sklearn.naive_bayes import GaussianNB from sklearn.metrics import accuracy_score, classification_report, confusion_matrix # Load dataset data = fetch_olivetti_faces(shuffle=True, random_state=42) X, y = data.data, data.target # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Train Naive Bayes model model = GaussianNB() model.fit(X_train, y_train) y_pred = model.predict(X_test) # Evaluation print(f'Accuracy: {accuracy_score(y_test, y_pred) * 100:.2f}%') print("\nClassification Report:") print(classification_report(y_test, y_pred, zero_division=0)) print("\nConfusion Matrix:") print(confusion_matrix(y_test, y_pred)) # Cross-validation cv_score = cross_val_score(model, X, y, cv=5).mean() print(f'\nCross-validation Accuracy: {cv_score * 100:.2f}%') # Show some predictions fig, axes = plt.subplots(3, 5, figsize=(12, 8)) for ax, img, true, pred in zip(axes.ravel(), X_test, y_test, y_pred): ax.imshow(img.reshape(64, 64), cmap='gray') ax.set_title(f"True: {true}, Pred: {pred}") ax.axis('off') plt.tight_layout() plt.show()

Comments

Popular posts from this blog

10

3

1