用python写的一段贝叶斯网络的程序
This file describes a Bayes Net Toolkit
that we will refer to now as BNT.
This version is 0.1. Let's consider this code an "alpha" version
that contains some useful functionality, but is not complete, and
is not a ready-to-use "application".
The purpose of the toolkit is to facilitate creating experimental
Bayes nets that analyze sequences of events. The toolkit provides
code to help with the following:
(a) creating Bayes nets. There are three classes of nodes defined,
and to construct a Bayes net, you can write code that calls the
constructors of these classes, and then you can create links among
them.
(b) displaying Bayes nets. There is code to create new windows
and to draw Bayes nets in them. This includes drawing the nodes,
the arcs, the labels, and various properties of nodes.
(c) propagating a-posteriori probabilities. When one node's
probability changes, the posterior probabilities of nodes downstream
from it may need to change, too, depending on firing thresholds, etc.
There is code in the toolkit to support that.
(d) simulating events ("playing" event sequences) and having the
Bayes net respond to them.
This functionality is split over several files. Here are the files
and the functionality that they represent.
BayesNetNode.py: class definition for the basic node in a Bayes net.
BayesUpdating.py: computing the a-posteriori probability of a node
given the probabilities of its parents.
InputNode.py: class definition for "input nodes". InputNode is a
subclass of BayesNetNode. Input nodes have special features that
allow them to recognize evidence items (using regular-expression
pattern matching of the string descriptions of events).
OutputNode.py: class definition for "output nodes". OutputBode
is a subclass of BayesNetNode. An output node can have a list of
actions to be performed when the node's posterior probability
exceeds a threshold
ReadWriteSigmaFiles.py: Functionality for loading and saving
Bayes nets
1