Набор данных для обучения байесовской сетевой структуре

После множества исследований я не нашел репозиторий с необходимым материалом для тестирования алгоритма, способного изучить структуру байесовской сети. Мне нужно всего 2 вещи:

  • правильная байесовская сеть
  • Набор данных, относящийся к BN

Мой алгоритм должен быть в состоянии изучить структуру из набора данных, а затем я мог бы проверить, насколько он далек от правильного BN. У вас есть ссылки? Я уже нашел некоторый набор данных без оригинального BN и наоборот, но мне нужны оба для моего университетского проекта.

заранее спасибо

PS: если вам интересно, я использую Python для своего проекта.


person A. May    schedule 25.12.2019    source источник
comment
возможно, вы уже нашли то, что ищете, но если нет, то ознакомились ли вы с классическим примером оценочного/рекомендательного письма из класса Дафны Коллер? pythonhosted.org/libpgm/unittestdict.html   -  person Jed    schedule 20.04.2020
comment
Кроме того, ваше требование к «правильной» байесовской сети кажется странным. Это напоминает известную цитату Бокса: «Все модели ошибочны, но некоторые из них полезны». Байесовская сеть — это всего лишь модель. Если вы хотите использовать искусственный пример для проверки своего алгоритма обучения структуры, вы можете просто определить любую модель, а затем взять из нее образцы, чтобы сгенерировать данные из «правильной» модели.   -  person Jed    schedule 20.04.2020
comment
R's bnlearn предоставляет хранилище наборов данных различных графических форматов по адресу bnlearn.com/bnrepository.   -  person user20650    schedule 25.06.2020


Ответы (1)


Попробуйте библиотеку bnlearn. Эта библиотека содержит изучение структуры, изучение параметров, вывод и наборы данных, связанные с BN, такими как спринклер, Азия, сигнализация и многое другое. См. пример ниже для изучения структуры и логического вывода.

https://erdogant.github.io/bnlearn

# Load asia DAG
import bnlearn

DAG = bnlearn.import_DAG('asia')
# plot ground truth

G = bnlearn.plot(DAG)
# Sampling

df = bnlearn.sampling(DAG, n=10000)

# Structure learning of sampled dataset
model_sl = bnlearn.structure_learning.fit(df, methodtype='hc', scoretype='bic')

# Plot based on structure learning of sampled data
bnlearn.plot(model_sl, pos=G['pos'])

# Compare networks and make plot
bnlearn.compare_networks(model, model_sl, pos=G['pos'])

Обратите внимание, что библиотека bnlearn построена на основе pgmpy. Установка выглядит следующим образом:

# Create new env.
conda create -n BNLEARN python=3.6
conda activate BNLEARN
conda install -c ankurankan pgmpy

# dectivate/activate
conda deactivate
conda activate BNLEARN

# install bnlearn
pip install bnlearn
person erdogant    schedule 18.06.2020