import numpy as np
import matplotlib.pyplot as plt

def bayes_simulation():
    # Define prior probabilities for three AI classes (e.g., Iris species)
    prior = np.array([0.33, 0.33, 0.34])  # P(Class): roughly equal priors
    print(f"Prior Probabilities: {prior}")
    
    # Simulated likelihoods P(Feature|Class) for a feature (e.g., petal length)
    likelihood = np.array([0.4, 0.3, 0.3])  # P(Feature|Class)
    print(f"Likelihoods P(Feature|Class): {likelihood}")
    
    # Compute evidence P(Feature) = Σ P(Feature|Class) * P(Class)
    evidence = np.sum(likelihood * prior)
    print(f"Evidence P(Feature): {evidence:.3f}")
    
    # Compute posterior P(Class|Feature) = P(Feature|Class) * P(Class) / P(Feature)
    posterior = (likelihood * prior) / evidence
    print(f"Posterior Probabilities P(Class|Feature): {posterior}")
    
    # Visualize posterior probabilities
    plt.figure(figsize=(8, 5))
    classes = ['Class 0', 'Class 1', 'Class 2']
    plt.bar(classes, posterior, color='skyblue', alpha=0.7)
    plt.title('Bayes\' Theorem: Posterior Probabilities for AI Classes')
    plt.xlabel('Class')
    plt.ylabel('Posterior Probability P(Class|Feature)')
    plt.annotate(f'Highest Prob: {posterior.max():.2f}', 
                 xy=(np.argmax(posterior), posterior.max()), 
                 xytext=(np.argmax(posterior) + 0.5, posterior.max() + 0.05),
                 arrowprops=dict(facecolor='black', shrink=0.05))
    plt.ylim(0, 1)
    plt.show()

bayes_simulation()