Skip to content

Expected behavior for individual_preds in easy models #173

Description

@cnellington

Currently individual_preds=True by 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

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions