Skip to main content

A Python package of mixed integer convex programming for directed acyclic graphs.

Project description

micodag is a Python package for learning Bayesian network using mixed integer convex programming.

  • Related paper:
    1. Integer Programming for Learning Directed Acyclic Graphs from Non-identifiable Gaussian Models
    2. An Asymptotically Optimal Coordinate Descent Algorithm for Learning Bayesian Networks from Gaussian Models
  • Authors: Tong Xu, Armeen Taeb, Simge Kucukyavuz, Ali Shojaie
  • Code for reproducing experiments in the paper is available on Github
  • Source code: https://github.com/AtomXT/micodag

Install

$ pip install micodag

Simple example

Please download the following test files: data, true graph, and moral graph.

import micodag as mic
import pandas as pd
import numpy as np

data = pd.read_csv("data_3bowling_n_500_iter_1.csv", header=None)
moral = pd.read_table('Sparse_Moral_edges_9_500_3.txt', delimiter=",", header=None)
true_B = pd.read_table('Sparse_Original_edges_9_500_3.txt', delimiter=",", header=None)
n, p = data.shape
lam = 12*np.log(p)/n

true_moral_ = [[0] * data.shape[1] for i in range(data.shape[1])]
for i in range(len(moral)):
    true_moral_[moral.iloc[i, 0] - 1][moral.iloc[i, 1] - 1] = 1
true_moral_ = np.array(true_moral_)

RGAP, B, _, obj, _ = mic.optimize(data, moral, lam)
est, min_obj = mic.CD(data, true_moral_, MAX_cycles=400,
                  lam=np.sqrt(12 * np.log(p) / n))
B_arcs = pd.DataFrame([[i+1, j+1] for i in range(p) for j in range(p) if B[i, j] != 0])
B_arcs_cd = pd.DataFrame([[i+1, j+1] for i in range(p) for j in range(p) if est[i, j] != 0])
print(B_arcs)
print(B_arcs_cd)
print(true_B)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

micodag-0.0.9.tar.gz (6.9 kB view details)

Uploaded Source

File details

Details for the file micodag-0.0.9.tar.gz.

File metadata

  • Download URL: micodag-0.0.9.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for micodag-0.0.9.tar.gz
Algorithm Hash digest
SHA256 d03f31f1f3b988308bdc9a712be4ab15afad7d6d7ae634460eaa5de5b05eb4e2
MD5 f37835ab2e8cb590665b97b15d5cdb36
BLAKE2b-256 8811859296bddecbf11dcfc0f861f3ecc6880a8510d359b04619da05f1320ec4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page