jtyoui.bayes.Bayes 源代码

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time  : 2019/4/23 16:33
# @Author: Jtyoui@qq.com


[文档]class BayesProbability: """贝叶斯 >>> bp = BayesProbability() >>> bp['bowl_one'] = 1 / 2 >>> bp['bowl_two'] = 1 / 2 >>> bp.prior_probability('bowl_one', 3 / 4) >>> bp.prior_probability('bowl_two', 1 / 2) >>> print(bp.posterior_probability('bowl_one')) """ def __init__(self): self.name_prob = dict() self.name_prior_prob = dict() def __setitem__(self, name, prob): """初始化name的概率 :param name: 名字 :param prob: 独立概率 """ self.name_prob.setdefault(name, prob)
[文档] def prior_probability(self, name, prob): """先验概率 :param name: 名字 :param prob: 先验概率 """ self.name_prior_prob[name] = prob
[文档] def posterior_probability(self, name): """后验概率""" h = 0 for _, prob in self.name_prior_prob.items(): h += prob h /= len(self.name_prior_prob) return (self.name_prob[name] * self.name_prior_prob[name]) / h
if __name__ == '__main__': bp = BayesProbability() bp['bowl_one'] = 1 / 2 bp['bowl_two'] = 1 / 2 bp.prior_probability('bowl_one', 3 / 4) bp.prior_probability('bowl_two', 1 / 2) print(bp.posterior_probability('bowl_one'))