-
Pythonで実装されたベイジアンネットワーク用のライブラリ
-
下記でベイジアンネットワークのグラフが作成できる(ノードとエッジは空)
from pgmpy.models import BayesianNetwork
G = BayesianNetwork()
- ノード、エッジを追加するには、
add_node
とかadd_edge
とかを使用する。 - 条件付き確率分布(CPD:conditional probability distribution)を追加することも可能
from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete.CPD import TabularCPD
student = BayesianNetwork([('diff', 'grades'), ('aptitude', 'grades')])
grades_cpd = TabularCPD('grades', 3, [[0.1,0.1,0.1,0.1,0.1,0.1],
... [0.1,0.1,0.1,0.1,0.1,0.1],
... [0.8,0.8,0.8,0.8,0.8,0.8]],
... evidence=['diff', 'aptitude'], evidence_card=[2, 3],
... state_names={'grades': ['gradeA', 'gradeB', 'gradeC'],
... 'diff': ['easy', 'hard'],
... 'aptitude': ['low', 'medium', 'high']})
student.add_cpds(grades_cpd)
上記のコードはこんな感じの条件付き確率を追加した。
diff: | easy | easy | easy | hard | hard | hard |
---|---|---|---|---|---|---|
aptitude: | low | medium | high | low | medium | high |
gradeA | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
gradeB | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
gradeC | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 | 0.8 |
- evidence_cardはevidenceに対応しており、各evidenceの種別数をリストで記載している。