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