Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/add dynotears #50

Merged
Merged
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
9e5aa86
adding core of dynotears from causal-os
GabrielAzevedoFerreiraQB Apr 26, 2020
7135d73
adding tests from causal-os
GabrielAzevedoFerreiraQB Apr 26, 2020
f4f4e9b
Merge branch 'feature/add-dynotears' into feature/main-dyno-algorithm
GabrielAzevedoFerreiraQB Apr 28, 2020
886514f
updating commit with steve's suggestions
GabrielAzevedoFerreiraQB Apr 28, 2020
fd8eb3e
NOT updating wa_est inside the rho loop
GabrielAzevedoFerreiraQB Apr 30, 2020
0e5cb05
Adding pylint<=2.4.4 to make circle ci pass
GabrielAzevedoFerreiraQB Apr 30, 2020
38acecf
adding data_generator
GabrielAzevedoFerreiraQB May 5, 2020
3254d25
adding testcases on data_generators.generate_continuous_dataframe fun…
GabrielAzevedoFerreiraQB May 7, 2020
cb62a92
adding reference to dynotears - pauls comments
GabrielAzevedoFerreiraQB May 26, 2020
1b0deb0
added from_numpy function, including tabu_edges, tabu_child and tabu_…
GabrielAzevedoFerreiraQB Apr 27, 2020
70c32c5
refactoring dynotears to reduce number of local variables
GabrielAzevedoFerreiraQB Apr 27, 2020
1cbb20a
adding test cases
GabrielAzevedoFerreiraQB Apr 27, 2020
f0d300d
converting output to structuremodel (it was on a matrix form before)
GabrielAzevedoFerreiraQB Apr 27, 2020
1fed518
adding multiple test cases for from_numpy_dynamic
GabrielAzevedoFerreiraQB Apr 28, 2020
aaf3a6c
updating RELEASE.md
GabrielAzevedoFerreiraQB Apr 30, 2020
6ee7dc1
accepting suggestions from Steve (clean/style changes)
GabrielAzevedoFerreiraQB May 7, 2020
bcad327
adding reference to dynotears - pauls comments
GabrielAzevedoFerreiraQB May 26, 2020
04d617c
linting
GabrielAzevedoFerreiraQB May 26, 2020
6b25189
Merge pull request #1 from quantumblack/feature/main-dyno-algorithm
GabrielAzevedoFerreiraQB May 26, 2020
085d694
linting
GabrielAzevedoFerreiraQB May 26, 2020
d964e0c
added from_numpy function, including tabu_edges, tabu_child and tabu_…
GabrielAzevedoFerreiraQB Apr 27, 2020
52e889e
removing unused fixture
GabrielAzevedoFerreiraQB Apr 28, 2020
88334d0
correcting testcase for python 3.5 compatibility
GabrielAzevedoFerreiraQB Apr 28, 2020
3b9e7c9
adding weights to edges
GabrielAzevedoFerreiraQB Apr 29, 2020
bd2c240
extra datasets for testing
GabrielAzevedoFerreiraQB Apr 29, 2020
8d0a581
adding multiple test cases for from_numpy_dynamic
GabrielAzevedoFerreiraQB Apr 29, 2020
f797f82
adding test cases for from_pandas
GabrielAzevedoFerreiraQB Apr 30, 2020
688d8d7
updating import for compatibility with python3.7
GabrielAzevedoFerreiraQB May 8, 2020
f3d9a7e
adding function to format dataframe properly. adding correspondent te…
GabrielAzevedoFerreiraQB May 8, 2020
2ee96fb
adding reference to dynotears - pauls comments
GabrielAzevedoFerreiraQB May 26, 2020
18af474
linting
GabrielAzevedoFerreiraQB May 26, 2020
82217b4
Merge pull request #2 from quantumblack/feature/add-from-numpy-dynamic
GabrielAzevedoFerreiraQB Jun 2, 2020
65d5f48
Merge pull request #4 from quantumblack/feature/add-from-pandas-dynamic
GabrielAzevedoFerreiraQB Jun 2, 2020
48f8099
adding main dynotears, from numpy, from pandas and some data generators
GabrielAzevedoFerreiraQB Jun 2, 2020
46ee3bf
adding data generators and testing
GabrielAzevedoFerreiraQB Jun 2, 2020
5a0950c
enabling FLoatingPointException only locally on data generators
GabrielAzevedoFerreiraQB Jun 2, 2020
88e2442
Update tests/structure/test_dynotears.py
GabrielAzevedoFerreiraQB Jun 4, 2020
f10eac8
Update tests/structure/test_dynotears.py
GabrielAzevedoFerreiraQB Jun 4, 2020
ca4c289
Update tests/structure/test_dynotears.py
GabrielAzevedoFerreiraQB Jun 4, 2020
1c7a2d7
Update causalnex/structure/data_generators.py
GabrielAzevedoFerreiraQB Jun 4, 2020
8eb7777
Update causalnex/structure/data_generators.py
GabrielAzevedoFerreiraQB Jun 4, 2020
431b41c
adding suggestions from Zain's review
GabrielAzevedoFerreiraQB Jun 13, 2020
5f25e97
adding part of Philip's comments
GabrielAzevedoFerreiraQB Jun 14, 2020
a85a589
creating DynamicDataTransformer
GabrielAzevedoFerreiraQB Jun 14, 2020
c5006c1
incorporating comments from Philip
GabrielAzevedoFerreiraQB Jun 26, 2020
bfa56a5
adding Steve's suggestions
GabrielAzevedoFerreiraQB Jun 26, 2020
dd7b494
removing commits that appeared on the PR by mistake + incorporating s…
GabrielAzevedoFerreiraQB Aug 19, 2020
6fbc857
merging with most recent develop version
GabrielAzevedoFerreiraQB Aug 19, 2020
3dfcdfb
linting
GabrielAzevedoFerreiraQB Aug 19, 2020
52725cd
changing variable order
GabrielAzevedoFerreiraQB Aug 19, 2020
5e45be7
changing variable order
GabrielAzevedoFerreiraQB Aug 19, 2020
2257d7a
adding spaces that were there before
GabrielAzevedoFerreiraQB Aug 19, 2020
9eb5dc6
using np round(trying to correct error)
GabrielAzevedoFerreiraQB Aug 19, 2020
99c4880
updating failling test case
GabrielAzevedoFerreiraQB Aug 19, 2020
9a042c7
updating failling test case
GabrielAzevedoFerreiraQB Aug 19, 2020
1d97afc
Update RELEASE.md
qbphilip Sep 4, 2020
91421b1
Update causalnex/structure/data_generators/core.py
qbphilip Sep 4, 2020
f0cd030
Update causalnex/structure/data_generators/wrappers.py
qbphilip Sep 4, 2020
859bd34
linting
GabrielAzevedoFerreiraQB Sep 5, 2020
bd42ffb
making threshold configurable
GabrielAzevedoFerreiraQB Sep 5, 2020
7bdfd9d
correcting string formatting from pevious commit
GabrielAzevedoFerreiraQB Sep 5, 2020
921701a
correcting assertion on data gen test cases
GabrielAzevedoFerreiraQB Sep 5, 2020
121b299
linting
GabrielAzevedoFerreiraQB Sep 8, 2020
086c665
Merge branch 'develop' into feature/add-dynotears
qbphilip Sep 8, 2020
a6d72bb
minor docstring fix
angeldrothqb Sep 9, 2020
4660f04
resolve np reshape
angeldrothqb Sep 9, 2020
84d0c80
linting
angeldrothqb Sep 9, 2020
247eb4b
Merge branch 'develop' into feature/add-dynotears
qbphilip Sep 9, 2020
c2b2851
restructure into transformer.py
angeldrothqb Sep 9, 2020
69f15a0
linting!
angeldrothqb Sep 9, 2020
c0b29ac
more linting fixez
angeldrothqb Sep 9, 2020
ec149d4
BLACK
angeldrothqb Sep 9, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Upcoming release

* adding dynotears (`from_numpy_dynamic`, an algorithm for structure learning on Dynamic Bayesian Networks)
qbphilip marked this conversation as resolved.
Show resolved Hide resolved
* Add a count data type to the data generator using a zero-inflated Poisson
* Set bounds/max class imbalance for binary features for the data generators
* Add non-linear data generators for multiple data types
Expand Down
2 changes: 1 addition & 1 deletion causalnex/structure/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@
``causalnex.structure`` provides functionality to define or learn structure.
"""

__all__ = ["StructureModel", "notears", "data_generators"]
__all__ = ["StructureModel", "notears", "dynotears", "data_generators"]

from .structuremodel import StructureModel
6 changes: 6 additions & 0 deletions causalnex/structure/data_generators/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,20 @@
"generate_continuous_data",
"generate_continuous_dataframe",
"generate_count_dataframe",
"gen_stationary_dyn_net_and_df",
"generate_dataframe_dynamic",
"generate_structure_dynamic",
]

from .core import generate_structure, nonlinear_sem_generator, sem_generator
from .wrappers import (
gen_stationary_dyn_net_and_df,
generate_binary_data,
generate_binary_dataframe,
generate_categorical_dataframe,
generate_continuous_data,
generate_continuous_dataframe,
generate_count_dataframe,
generate_dataframe_dynamic,
generate_structure_dynamic,
)
7 changes: 5 additions & 2 deletions causalnex/structure/data_generators/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@
import pandas as pd
from sklearn.gaussian_process.kernels import RBF, Kernel

from causalnex.structure import StructureModel
from causalnex.structure.categorical_variable_mapper import (
VariableFeatureMapper,
validate_schema,
)
from causalnex.structure.structuremodel import StructureModel

# dict mapping distributions names to their functions
__distribution_mapper = {
Expand Down Expand Up @@ -117,7 +117,10 @@ def generate_structure(
edge_flags = np.tril(np.ones([num_nodes, num_nodes]), k=-1)

else:
raise ValueError("unknown graph type")
raise ValueError(
"unknown graph type {t}. ".format(t=graph_type)
+ "Available types are ['erdos-renyi', 'barabasi-albert', 'full']"
)
qbphilip marked this conversation as resolved.
Show resolved Hide resolved

# randomly permute edges - required because we limited ourselves to lower diagonal previously
perms = np.random.permutation(np.eye(num_nodes, num_nodes))
Expand Down