pgmpy возвращает неверные условные вероятности

Я пытаюсь использовать пакет Python pgmpy, чтобы узнать вероятности перехода между определенным набором состояний, однако, когда я подгоняю модель, я обнаруживаю, что условные вероятности неверны.

В качестве очень упрощенного примера проблемы, о которой я говорю, рассмотрим байесовскую сеть, состоящую из двух состояний, A и B, с одним направленным ребром, идущим от A к B. И предположим, что мы наблюдали, что всякий раз, когда A ноль, B один, и всякий раз, когда A один, B ноль. Код, описывающий эту ситуацию:

import pandas as pd
from pgmpy.models import BayesianModel

data = pd.DataFrame(data={'A': [0, 0, 1, 1, 1, 1], 'B': [1, 1, 0, 0, 0, 0]})
model = BayesianModel([('A', 'B')])
model.fit(data)

Однако, когда мы затем проверяем подогнанные условные вероятности, вызывая model.cpds[1]мы находим, что pgmpy узнал следующее:

+------+------+------+
| A    | A(0) | A(1) |
+------+------+------+
| B(0) | 0.5  | 0.5  |
+------+------+------+
| B(1) | 0.5  | 0.5  |
+------+------+------+

когда это должно было узнать

+------+------+------+
| A    | A(0) | A(1) |
+------+------+------+
| B(0) | 0.0  | 1.0  |
+------+------+------+
| B(1) | 1.0  | 0.0  |
+------+------+------+

Может кто-нибудь объяснить мне, что здесь происходит? Это очень простой пример, и я чувствую, что схожу с ума. Спасибо

1 ответ

Решение

Версия pgmpy доступна для установки через pip есть ошибка, которая заставляет его неправильно вычислять условные вероятности. Клонирование репозитория dev из git и его установка вручную решают проблему. Спасибо @lstbl за выяснение этого здесь: https://stats.stackexchange.com/questions/292738/inconsistencies-between-conditional-probability-calculations-by-hand-and-with-pg

Другие вопросы по тегам