Подтвердить что ты не робот

Создайте Байесовскую сеть и изучите параметры с помощью Python3.x

Я ищу наиболее подходящий инструмент для python3.x для Windows, чтобы создать Bayesian Network, узнать его параметры из данных и выполнить вывод.

Я хочу определить структуру сети следующим образом: enter image description here

Из этот документ.

Все переменные дискретны (и могут принимать только 2 возможных состояния), за исключением "Размер" и "GraspPose", которые являются непрерывными и должны быть смоделированы как смесь гауссиан.

Авторы используют алгоритм ожидания-максимизации, чтобы узнать параметры для таблиц условной вероятности и алгоритм Junction-Tree для вычисления точного вывода.

Как я понимаю, все реализовано в MatLab с помощью Bayes Net Toolbox от Murphy.

Я попытался найти что-то подобное в python, и вот мои результаты:

  • Python Bayesian Network Toolbox http://sourceforge.net/projects/pbnt.berlios/ (http://pbnt.berlios.de/). Веб-сайт не работает, проект, похоже, не поддерживается.
  • BayesPy https://github.com/bayespy/bayespy Я думаю, что это то, что мне действительно нужно, но я не могу найти некоторые примеры, подобные моему делу, чтобы понять, как подойти к построению сетевой структуры.
  • PyMC кажется мощным модулем, но у меня проблемы с импортом его в Windows 64, python 3.3. Я получаю ошибку при установке версии разработки

    ПРЕДУПРЕЖДЕНИЕ (theano.configdefaults): g++ не обнаружено! Theano не сможет выполнить оптимизированные C-реализации (как для CPU, так и для GPU) и по умолчанию будет реализовывать Python. Производительность будет сильно ухудшена. Чтобы удалить это предупреждение, установите флаги Theano cxx в пустую строку.

UPDATE:

  1. libpgm (http://pythonhosted.org/libpgm/). То, что мне нужно, к сожалению, не поддерживается python 3.x
  2. Очень интересная активно развивающаяся библиотека: PGMPY. К сожалению, непрерывные переменные и обучение по данным еще не подтверждены. https://github.com/pgmpy/pgmpy/

Любые советы и конкретные примеры будут высоко оценены.

4b9b3361

Ответ 1

Похоже, pomegranate был недавно обновлен, чтобы включить Bayesian Networks. Я сам не пробовал, но интерфейс выглядит красиво и sklearn-ish.

Ответ 2

В случае проблемы с pymc g++ я настоятельно рекомендую выполнить установку g++, это значительно увеличит процесс выборки, иначе вам придется жить с этим предупреждением и сидеть там в течение 1 часа для процесса выборки 2000 года.

Способ устранения предупреждения: 1. Установите g++, загрузите cywing и получите g++ install, вы можете это сделать Google. Чтобы проверить это, просто перейдите в "cmd" и введите "g++", если он говорит "требуется входной файл", отлично, вы установили g++. 2. установить пакет python: mingw, libpython 3. установить пакет python: theano

это должно устранить эту проблему.

В настоящее время я работаю над той же проблемой, удачи!

Ответ 3

Поздно к вечеринке, как всегда, но я завернул Java API BayesServer с помощью JPype; он может не иметь всех необходимых функций, но вы создали бы такую ​​сеть, используя что-то вроде:

from bayesianpy.network import Builder as builder
import bayesianpy.network

nt = bayesianpy.network.create_network()

# where df is your dataframe
task = builder.create_discrete_variable(nt, df, 'task')

size = builder.create_continuous_variable(nt, 'size')
grasp_pose = builder.create_continuous_variable(nt, 'GraspPose')

builder.create_link(nt, size, grasp_pose)
builder.create_link(nt, task, grasp_pose)

for v in ['fill level', 'object shape', 'side graspable']:
    va = builder.create_discrete_variable(nt, df, v)
    builder.create_link(nt, va, grasp_pose)
    builder.create_link(nt, task, va)

# write df to data store
with bayesianpy.data.DataSet(df, bayesianpy.utils.get_path_to_parent_dir(__file__), logger) as dataset:
    model = bayesianpy.model.NetworkModel(nt, logger)
    model.train(dataset)

    # to query model multi-threaded
    results = model.batch_query(dataset, [bayesianpy.model.QueryModelStatistics()], append_to_df=False)

Я не связан с Bayes Server, а оболочка Python не является официальной (вы можете напрямую использовать Java API через Python). Моя обложка делает некоторые предположения и помещает ограничения на функции, которые я не очень использую. Репо находится здесь: github.com/morganics/bayesianpy