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:
- Integer Programming for Learning Directed Acyclic Graphs from Non-identifiable Gaussian Models
- 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)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d03f31f1f3b988308bdc9a712be4ab15afad7d6d7ae634460eaa5de5b05eb4e2
|
|
| MD5 |
f37835ab2e8cb590665b97b15d5cdb36
|
|
| BLAKE2b-256 |
8811859296bddecbf11dcfc0f861f3ecc6880a8510d359b04619da05f1320ec4
|