import numpy as np
from contextualized.easy import ContextualizedCorrelationNetworks, ContextualizedMarkovNetworks, ContextualizedBayesianNetworks
n_samples = 100
n_contexts = 5
n_features = 10
n_bootstraps = 3
C = np.random.uniform(-1, 1, size=(n_samples, n_contexts))
X = np.random.normal(0, 1, size=(n_samples, n_features))
ccn = ContextualizedCorrelationNetworks(n_bootstraps=n_bootstraps)
ccn.fit(C, X, max_epochs=1)
networks = ccn.predict_networks(C)
assert networks.shape == (n_samples, n_features, n_features)
networks = ccn.predict_networks(C, individual_preds=False)
assert networks.shape == (n_samples, n_features, n_features)
networks_individual = ccn.predict_networks(C, individual_preds=True)
assert networks_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
y_pred = ccn.predict(C, X)
assert y_pred.shape == (n_samples, n_features, n_features)
y_pred_avg = ccn.predict(C, X, individual_preds=False)
assert y_pred_avg.shape == (n_samples, n_features, n_features)
y_pred_individual = ccn.predict(C, X, individual_preds=True)
assert y_pred_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
mses = ccn.measure_mses(C, X)
assert mses.shape == (n_samples,)
mses_avg = ccn.measure_mses(C, X, individual_preds=False)
assert mses_avg.shape == (n_samples,)
mses_individual = ccn.measure_mses(C, X, individual_preds=True)
assert mses_individual.shape == (n_bootstraps, n_samples)
rho_squared = ccn.predict_correlation(C)
assert rho_squared.shape == (n_samples, n_features, n_features)
rho_squared = ccn.predict_correlation(C, individual_preds=False, squared=True)
assert rho_squared.shape == (n_samples, n_features, n_features)
rho_squared_individual = ccn.predict_correlation(C, individual_preds=True, squared=True)
assert rho_squared_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
rho = ccn.predict_correlation(C, squared=False)
assert rho.shape == (n_samples, n_features, n_features)
rho = ccn.predict_correlation(C, individual_preds=False, squared=False)
assert rho.shape == (n_samples, n_features, n_features)
rho_individual = ccn.predict_correlation(C, individual_preds=True, squared=False)
assert rho_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
mkn = ContextualizedMarkovNetworks(n_bootstraps=n_bootstraps)
mkn.fit(C, X, max_epochs=1)
networks = mkn.predict_networks(C)
assert networks.shape == (n_samples, n_features, n_features)
networks = mkn.predict_networks(C, individual_preds=False)
assert networks.shape == (n_samples, n_features, n_features)
networks_individual = mkn.predict_networks(C, individual_preds=True)
assert networks_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
mses_avg = mkn.measure_mses(C, X, individual_preds=False)
assert mses_avg.shape == (n_samples,)
mses_individual = mkn.measure_mses(C, X, individual_preds=True)
assert mses_individual.shape == (n_bootstraps, n_samples)
mkn = ContextualizedMarkovNetworks(n_bootstraps=n_bootstraps)
mkn.fit(C, X, max_epochs=1)
networks = mkn.predict_networks(C)
assert networks.shape == (n_samples, n_features, n_features)
networks = mkn.predict_networks(C, individual_preds=False)
assert networks.shape == (n_samples, n_features, n_features)
networks_individual = mkn.predict_networks(C, individual_preds=True)
assert networks_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
y_pred = mkn.predict(C, X)
assert y_pred.shape == (n_samples, n_features)
y_pred_avg = mkn.predict(C, X, individual_preds=False)
assert y_pred_avg.shape == (n_samples, n_features)
y_pred_individual = mkn.predict(C, X, individual_preds=True)
assert y_pred_individual.shape == (n_bootstraps, n_samples, n_features)
mses = mkn.measure_mses(C, X)
assert mses.shape == (n_samples,)
mses_avg = mkn.measure_mses(C, X, individual_preds=False)
assert mses_avg.shape == (n_samples,)
mses_individual = mkn.measure_mses(C, X, individual_preds=True)
assert mses_individual.shape == (n_bootstraps, n_samples)
precisions = mkn.predict_precisions(C)
assert precisions.shape == (n_samples, n_features, n_features)
precision_avg = mkn.predict_precisions(C, individual_preds=False)
assert precision_avg.shape == (n_samples, n_features, n_features)
precision_individual = mkn.predict_precisions(C, individual_preds=True)
assert precision_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
cbn = ContextualizedBayesianNetworks(n_bootstraps=n_bootstraps)
cbn.fit(C, X, max_epochs=1)
networks = cbn.predict_networks(C)
assert networks.shape == (n_samples, n_features, n_features)
networks = cbn.predict_networks(C, individual_preds=False)
assert networks.shape == (n_samples, n_features, n_features)
networks_individual = cbn.predict_networks(C, individual_preds=True)
assert networks_individual.shape == (n_bootstraps, n_samples, n_features, n_features)
# Broken, related to issue #266
# y_pred = cbn.predict(C, X)
# assert y_pred.shape == (n_samples, n_features)
# y_pred_avg = cbn.predict(C, X, individual_preds=False)
# assert y_pred_avg.shape == (n_samples, n_features)
# y_pred_individual = cbn.predict(C, X, individual_preds=True)
# assert y_pred_individual.shape == (n_bootstraps, n_samples, n_features)
mses = cbn.measure_mses(C, X)
assert mses.shape == (n_samples,)
mses_avg = cbn.measure_mses(C, X, individual_preds=False)
assert mses_avg.shape == (n_samples,)
mses_individual = cbn.measure_mses(C, X, individual_preds=True)
assert mses_individual.shape == (n_bootstraps, n_samples)
Currently
individual_preds=Trueby default in the easy networks models. I believe the desired behavior should be averaging the bootstraps by default (i.e.individual_preds=False). Setting this manually in the markov networks works fine. In the correlation networks I was observing only a single value returned per sample, not the whole network.To replicate