Chapter 10 — Practical Probability in Python
Hands-on implementation of probability concepts is key for AI/ML tasks like modeling uncertainty, simulations, and probabilistic predictions.
10.1 Libraries for Probability in Python
- NumPy: Arrays, random sampling, vectorized operations.
- SciPy (scipy.stats): Prebuilt distributions, PMFs/PDFs, statistical functions.
- Pandas: Data handling, grouping, and aggregation for probability analysis.
10.2 Simulating Random Events
Simulations help understand probabilistic behavior and validate models.
import numpy as np
# Simulate 1000 coin flips (0 = tails, 1 = heads)
flips = np.random.choice([0, 1], size=1000, p=[0.5, 0.5])
# Calculate probability of heads
prob_heads = np.mean(flips)
print("Probability of heads:", prob_heads)
10.3 Calculating Expectations & Probabilities
import scipy.stats as stats
# Discrete random variable: number of successes in 5 trials (Binomial)
n, p = 5, 0.6
X = stats.binom(n, p)
# Probability of exactly 3 successes
prob_3 = X.pmf(3)
print("P(X=3):", prob_3)
# Expected value and variance
expected = X.mean()
variance = X.var()
print("Expected value:", expected, "Variance:", variance)
10.4 Implementing Probabilistic Models
Build simple models from scratch to understand ML foundations.
import numpy as np
# Simple Naive Bayes for binary features
# Features: [Rain, HomeworkDone], Labels: [Pass=1, Fail=0]
X = np.array([[1,1],[1,0],[0,1],[0,0]])
y = np.array([1,0,1,0])
# Estimate probabilities
p_pass = np.mean(y)
p_feature_given_pass = np.mean(X[y==1], axis=0)
p_feature_given_fail = np.mean(X[y==0], axis=0)
print("P(Pass):", p_pass)
print("P(features|Pass):", p_feature_given_pass)
print("P(features|Fail):", p_feature_given_fail)
10.5 Applications in AI/ML
- Monte Carlo simulations for risk assessment and uncertainty modeling.
- Sampling for probabilistic inference and generative models.
- Implementing Naive Bayes, Gaussian models, and other probabilistic classifiers.
- Feature expectation and variance calculations for normalization and feature scaling.
10.6 Key Takeaways
- Python libraries make probability computations and simulations efficient.
- Simulations and random sampling validate probabilistic models.
- Implementing models from scratch strengthens understanding of probability in ML.
- Probability is central to AI/ML applications like classification, sequence modeling, and uncertainty estimation.
Conclusion: With practical Python skills in probability, you can simulate events, compute expectations, and implement probabilistic models — a crucial step before deploying AI/ML systems.