Loading W Code...
5
Topics
sklearn
Implementation
Indian Context
SMS Spam Detection, Flipkart Review Analysis, Hindi/Hinglish Text Classification
Concept Level: Beginner
# BAYES' THEOREM IN ACTION
import numpy as np
def bayes_theorem(prior, likelihood, false_positive_rate):
"""
Calculate posterior probability using Bayes' theorem
P(Disease|Positive) = P(Positive|Disease) * P(Disease) / P(Positive)
P(Positive) = P(Positive|Disease)*P(Disease) + P(Positive|NoDisease)*P(NoDisease)
"""
# P(Positive)
p_positive = (likelihood * prior) + (false_positive_rate * (1 - prior))
# P(Disease|Positive)
posterior = (likelihood * prior) / p_positive
return posterior
# Example: Dengue test in India
prior_dengue = 0.01 # 1% of population has dengue
test_sensitivity = 0.99 # Test correctly identifies 99% of cases
false_positive_rate = 0.05 # 5% false positive rate
probability = bayes_theorem(prior_dengue, test_sensitivity, false_positive_rate)
print("🏥 Medical Diagnosis Example: Dengue Test")
print("="*50)
print(f"Prior probability (having dengue): {prior_dengue:.1%}")
print(f"Test sensitivity: {test_sensitivity:.1%}")
print(f"False positive rate: {false_positive_rate:.1%}")
print()
print(f"If test is POSITIVE:")
print(f"Probability of actually having dengue: {probability:.1%}")
print()
print("💡 Insight: Even with 99% accurate test, low prior")
print(" means many positives are false positives!")
# Multiple tests example
print("\n" + "="*50)
print("If we do a SECOND TEST and it's also positive:")
# Now the prior becomes the posterior from first test
second_test_prob = bayes_theorem(probability, test_sensitivity, false_positive_rate)
print(f"Probability after 2 positive tests: {second_test_prob:.1%}")