Попробуйте метод getProbability в классе BayesNet. Вот что я делаю.
for(int i = 0; i < bnet.getCardinality(nodeIndex); i++)
{
System.out.print(bnet.getNodeValue(nodeIndex, i) + " = " + bnet.getProbability(nodeIndex, row, i) + " ");
}
Где row равен 0 ‹= row ‹ bnet.getParentCardinality() и каждое значение row соответствует одной комбинации выходных символов родителя.
Таким образом, если у вашего узла 2 родителя, и каждый родитель выводит 2 символа, то у вас будет 0 ‹= строка ‹ 4 (2 родителя x 2 символа)
row = 0 соответствует комбинации 0,0 // значение символа с индексом 0 для родителя с индексом 0 и значение символа с индексом 0 для родителя с индексом 1
строка = 1 соответствует комбинации 0,1
row = 2 соответствует комбинации 1,0 // значение символа в индексе 1 родителя 0 и так далее.
строка = 3 соответствует комбинации 1,1
Вот пример вывода
----- Узел --------------
Имя: TuberculosisOrCancer родители: 2 : LungCancer Tuberculosis
Количество значений, которые может принимать узел: 2
[0] = да // индекс и значение
[1] = нет // индекс и значение
Распределения ---
Когда Рак легких = да, Туберкулез = нет
да = 0,9990990990990991 нет = 9,009009009009009E-4
Когда Рак легких = да, Туберкулез = да
да = 0,9444444444444444 нет = 0,05555555555555555
Когда Рак легких = нет, Туберкулез = нет
да = 5,3475935828877E-5 нет = 0,9999465240641712
Когда Рак легких = нет, Туберкулез = да
да = 0,9944444444444445 нет = 0,005555555555555556
person
user1026267
schedule
19.03.2015