Blind source separation based on the probabilistic tensor factorisation framework
Decompose demands python 3.6 and tensorflow 1.7. The newest github code of decompose can be installed using pip:
pip3 install git+https://github.com/bethgelab/decompose
Decompose provides an interface that is similar to the interface of scikit-learn:
import numpy as np
from sklearn.datasets import make_low_rank_matrix
from decompose.sklearn import DECOMPOSE
from decompose.distributions.cenNormal import CenNormal
# create a numpy array containing a synthetic low rank dataset
X = make_low_rank_matrix(n_samples=1000, n_features=1000,
effective_rank=3, tail_strength=0.5)
# create an instance of a decompose model
model = DECOMPOSE(modelDirectory="/tmp/myNewModel",
priors=[CenNormal(), CenNormal()],
n_components=3)
# train the model and transform the training data
U0 = model.fit_transform(X)
# learned filter bank
U1 = model.components_
# variance ratio of the sources
varianceRatio = model.variance_ratio_
# reconstruction of the data
XHat = np.dot(U0.T, U1)
The publication linked to this repository is available on arXiv: [1803.08882] Trace your sources in large-scale data: one ring to find them all
The repository is still in alpha stage and does not yet contain all the code used in the publication above. In the next days documentation and features will be added.