Iti0210w9tut
Allikas: Lambda
import csv
from collections import defaultdict
counts = defaultdict(int)
with open("somerville.txt") as f:
rd = csv.reader(f, delimiter=",")
print(next(rd))
for r in rd:
counts[tuple(r)] += 1
# ['happiness', 'house_price', 'school_quality', 'road_quality']
N = sum(counts.values())
jpd = {}
for happiness in ["happy" , "unhappy"]:
for house_price in ["low", "ok", "high"]:
for school_quality in ["low", "ok", "high"]:
for road_quality in ["low", "ok", "high"]:
p = counts[(happiness,house_price,school_quality,road_quality)]/N
jpd[(happiness,house_price,school_quality,road_quality)] = p
# e: road_quality = low
# q: happiness = happy
# hidden variables h: [house_price, school_quality]
P_e = 0
for happiness in ["happy" , "unhappy"]:
for house_price in ["low", "ok", "high"]:
for school_quality in ["low", "ok", "high"]:
P_e += jpd[(happiness,house_price,school_quality,"low")]
P_qe = 0
for house_price in ["low", "ok", "high"]:
for school_quality in ["low", "ok", "high"]:
P_qe += jpd[("happy",house_price,school_quality,"low")]
# P(happy|road_quality=low)
P = P_qe / P_e