The metric_comparisons module
The metric_comparisons module contains the MetricComparisons class.
Algorithms for comparing different spaces are implemented as methods of this class.
- class metric_comparisons.MetricComparisons(coordinates=None, distances=None, maxk=None, period=None, verbose=False, n_jobs=2)[source]
Class for the metric comparisons.
- greedy_feature_selection_full(n_coords, k=1, n_best=10, symm=True)[source]
Greedy selection of the set of features which is most informative about full distance measure.
Using the n-best single features describing the full feature space, one more of all other features is added combinatorically to make a candidate pool of duplets. Then, using the n-best duplets describing the full space, one more of all other features is added to make a candidate pool of triplets, etc. This procedure is done until including the desired number of features (n_coords) is reached.
- Parameters:
n_coords – number of coodinates after which the algorithm is stopped
k (int) – number of neighbours considered in the computation of the imbalances
n_best (int) – the n_best tuples are chosen in each iteration to combinatorically add one variable and calculate the imbalance until n_coords is reached
symm (bool) – whether to use the symmetrised information imbalance
- Returns:
best_tuples (list(list(int))) – best coordinates selected at each iteration
best_imbalances (np.ndarray(float,float)) – imbalances (full–>coords, coords–>full) computed at each iteration, belonging to the best tuple
all_imbalances (list(list(list(int)))) – all imbalances (full–>coords, coords–>full), computed at each iteration, belonging all greedy tuples
- greedy_feature_selection_target(target_ranks, n_coords, k, n_best, symm=True)[source]
Greedy selection of the set of features which is most informative about a target distance.
Using the n-best single features describing the target_ranks, one more of all other features is added combinatorically to make a candidate pool of duplets. Then, using the n-best duplets describing the target_ranks, one more of all other features is added to make a candidate pool of triplets, etc. This procedure is done until including the desired number of variables (n_coords) is reached.
- Parameters:
target_ranks (np.ndarray(int)) – an array containing the ranks in the target space, could be e.g. the nearest neighbor ranks for a different set of variables on the same data points.
n_coords – number of coodinates after which the algorithm is stopped
k (int) – number of neighbours considered in the computation of the imbalances
n_best (int) – the n_best tuples are chosen in each iteration to combinatorically add one variable and calculate the imbalance until n_coords is reached
symm (bool) – whether to use the symmetrised information imbalance
- Returns:
best_tuples (list(list(int))) – best coordinates selected at each iteration
best_imbalances (np.ndarray(float,float)) – imbalances (full–>coords, coords–>full) computed at each iteration, belonging to the best tuple
all_imbalances (list(list(list(int)))) – all imbalances (full–>coords, coords–>full), computed at each iteration, belonging all greedy tuples
- return_data_overlap(coordinates=None, distances=None, dist_indices=None, k=30, avg=True, use_cython=True)[source]
Return the neighbour overlap between the full space and another dataset.
An overlap of 1 means that all neighbours of a point are the same in the two spaces.
- Parameters:
coordinates (np.ndarray(float)) – the data set to compare, of shape (N , dimension of embedding space)
distances (np.ndarray(float), tuple(np.ndarray(float), np.ndarray(float))) – Distance matrix (see base class for shape explanation)
k (int) – the number of neighbours considered for the overlap
- Returns:
(float) – the neighbour overlap of the points
- return_inf_imb_causality(cause_present, effect_present, effect_future, weights, conditioning_present=None, k=1, period_cause=None, period_effect=None, period_conditioning=None)[source]
Return the imbalances (weight * cause_present, effect_present) -> effect_future.
When conditioning_present is not None, the first space is extended with an additional weight, resulting in (weight1 * cause_present, weight2 * conditioning_present, effect_present) -> effect_future.
- Parameters:
cause_present (np.ndarray(float)) – N x D1 matrix, putative driver system data set at time 0
effect_present (np.ndarray(float)) – N x D2 matrix, putative driven system data set at time 0
effect_future (np.ndarray(float)) – N x D2 matrix, putative driven system data set at time tau
weights (list(float), np.ndarray(float)) – scaling parameters for the variables at time 0 (1D array if conditioning_present is None, 2D array of shape (n_weights,2) otherwise, where the first column is referred to ‘cause_present’ and the second one to ‘conditioning_present’)
conditioning_present (np.ndarray(float) – N x D3 matrix, conditioning system data set at time 0
k (int) – order of nearest neighbour considered for the calculation of the imbalance
period_cause (int,float,np.ndarray(float)) – periods of variables in ‘cause_present’
period_effect (int,float,np.ndarray(float)) – periods of variables in ‘effect_present’ and ‘effect_future’
period_conditioning (int,float,np.ndarray(float)) – periods of variables in ‘conditioning_present’
- Returns:
imbalances (np.ndarray(float)) – the information imbalances for the different weights
- return_inf_imb_causality_conditioning(cause_present, effect_present, conditioning_present, effect_future, weights_cause, weights_conditioning, k=1, period_cause=None, period_effect=None, period_conditioning=None)[source]
Return the scanned imbalances in presence and in absence of the putative causal system.
- Parameters:
cause_present (np.ndarray(float)) – N x D1 matrix, putative driver system data set at time 0
effect_present (np.ndarray(float)) – N x D2 matrix, putative driven system data set at time 0
conditioning_present (np.ndarray(float)) – N x D3 matrix, conditioning driven system data set at time 0
effect_future (np.ndarray(float)) – N x D2 matrix, putative driven system data set at time tau
weights_cause (list(float), np.ndarray(float)) – scaling parameters for the causal variables
weights_conditioning (list(float), np.ndarray(float)) – scaling parameters for the conditioning variables
k (int) – order of nearest neighbour considered for the calculation of the imbalance
period_cause (int,float,np.ndarray(float)) – periods of variables in ‘cause_present’
period_effect (int,float,np.ndarray(float)) – periods of variables in ‘effect_present’ and ‘effect_future’
period_conditioning (int,float,np.ndarray(float)) – periods of variables in ‘conditioning_present’
- Returns:
imbs_no_cause (np.ndarray(float)) – array of shape (weights_conditioning,) containing the imbalances (weight*cause_present, effect_present) -> effect_future
imbs_with_cause (np.ndarray(float)) – array of shape (weights_cause * weights_conditioning,) containing the imbalances (weight * cause_present, weight_conditioning * conditioning_present, effect_present) -> effect_future
- return_inf_imb_causality_input_rank(ranks_present, effect_future, k=1, period_effect=None)[source]
Return the imbalances (weight * cause_present, effect_present) -> effect_future.
- Parameters:
ranks_present (np.ndarray(float)) – array of shape (N_weights, N, maxk+1), containing N_weights matrices (N, maxk+1) corresponding to the scanned values of the scaling parameter
effect_future (np.ndarray(float)) – N x D2 matrix, putative driven system data set at time tau
k (int) – order of nearest neighbour considered for the calculation of the imbalance
period_effect (int,float,np.ndarray(float)) – periods of the variables in ‘effect_future’
- Returns:
imbalances (np.ndarray(float)) – the information imbalances for the different weights included in ‘ranks_present’
- return_inf_imb_full_all_coords(k=1)[source]
Compute the information imbalances between the ‘full’ space and each one of its D features.
- Parameters:
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
(np.array (float)) – a 2xD matrix containing the information imbalances between
the original space and each of its D features.
- return_inf_imb_full_all_dplets(d, k=1)[source]
Compute the information imbalances between the full space and all possible combinations of d coordinates.
- Parameters:
d (int) – target order considered (e.g., d = 2 will compute all couples of coordinates)
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
coord_list – list of the set of coordinates for which imbalances are computed
imbalances – the correspinding couples of information imbalances
- return_inf_imb_full_selected_coords(coord_list, k=1)[source]
Compute the information imbalances between the ‘full’ space and a selection of features.
- Parameters:
coord_list (list(list(int))) – a list of the type [[1, 2], [8, 3, 5], …] where each sub-list defines a set of coordinates for which the information imbalance should be computed.
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
(np.array (float)) – a 2xL matrix containing the information imbalances between
the original space and each one of the L subspaces defined in coord_list
- return_inf_imb_matrix_of_coords(k=1)[source]
Compute the information imbalances between all pairs of single features of the data.
- Parameters:
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
n_mat (np.array(float)) – a DxD matrix containing all the information imbalances
- return_inf_imb_target_all_coords(target_ranks, k=1)[source]
Compute the information imbalances between the ‘target’ space and a all single feature spaces in X.
- Parameters:
target_ranks (np.array(int)) – an array containing the ranks in the target space
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
(np.array (float)) – a 2xL matrix containing the information imbalances between
the target space and each one of the L subspaces defined in coord_list
- return_inf_imb_target_all_dplets(target_ranks, d, k=1)[source]
Compute the information imbalances between a target distance and all combinations of d coordinates of X.
- Parameters:
target_ranks (np.array(int)) – an array containing the ranks in the target space
d (int) – target order considered (e.g., d = 2 will compute all couples of coordinates)
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
coord_list – list of the set of coordinates for which imbalances are computed
imbalances – the correspinding couples of information imbalances
- return_inf_imb_target_selected_coords(target_ranks, coord_list, k=1)[source]
Compute the information imbalances between the ‘target’ space and a selection of features.
- Parameters:
target_ranks (np.ndarray(int)) – an array containing the ranks in the target space, could be e.g. the nearest neighbor ranks for a different set of variables on the same data points.
coord_list (list(list(int))) – a list of the type [[1, 2], [8, 3, 5], …] where each sub-list defines a set of coordinates for which the information imbalance should be computed.
k (int) – number of neighbours considered in the computation of the imbalances
- Returns:
(np.array (float)) – a 2xL matrix containing the information imbalances between
the target space and each one of the L subspaces defined in coord_list
- return_inf_imb_two_selected_coords(coords1, coords2, k=1)[source]
Return the imbalances between distances taken as the i and the j component of the coordinate matrix X.
- Parameters:
coords1 (list(int)) – components for the first distance
coords2 (list(int)) – components for the second distance
k (int) – order of nearest neighbour considered for the calculation of the imbalance, default is 1
- Returns:
(float, float) – the information imbalance from distance i to distance j and vice versa
- return_information_imbalace(coordinates, k=1, subset_size=2000, repeats=None, avg=True)[source]
Return the imbalance with another dataset X.
- Parameters:
coordinates (np.ndarray(float)) – the coordinates of the othe dataset (N , dimension of embedding space).
k (int) – order of nearest neighbour considered for the calculation of the imbalance, default is 1,
subset_size (int) – size of the subsets on which the information imbalance is computed.
repeats (int) – the number of repetitions for the information imbalance calculation.
- Returns:
(np.array, np.array) – the information imbalances their standard error
- return_label_overlap(labels, k=None, avg=True, coords=None, class_fraction=None, weighted=True)[source]
Return the neighbour overlap between the full space and a set of labels.
An overlap of 1 means that all neighbours of a point have the same label as the central point.
- Parameters:
labels (list) – the labels with respect to which the overlap is computed.
k (int) – the number of neighbours considered for the overlap.
coords (array) – subset of indices on which the overlap is computed.
class_fraction (float) – number of nearest neighbor considered expressed as a fraction of the total number of class samples. Useful when classes are imbalanced.
weighted (bool) – if True the overlap is weighted inversely proportional to the class population.
- Returns:
(float) – the neighbour overlap with the class labels.
- return_label_overlap_coords(labels, coords, k=30)[source]
Return the neighbour overlap between a selection of coordinates and a set of labels.
An overlap of 1 means that all neighbours of a point have the same label as the central point.
- Parameters:
labels (np.ndarray) – the labels with respect to which the overlap is computed
coords (list(int)) – a list of coordinates to consider for the distance computation
k (int) – the number of neighbours considered for the overlap
- Returns:
(float) – the neighbour overlap of the points
- return_label_overlap_selected_coords(labels, coord_list, k=30)[source]
Return a list of neighbour overlaps computed on a list of selected coordinates.
An overlap of 1 means that all neighbours of a point have the same label as the central point.
- Parameters:
labels (np.ndarray) – the labels with respect to which the overlap is computed
coord_list (list(list(int))) – a list of lists, with each sublist representing a set of coordinates
k – the number of neighbours considered for the overlap
- Returns:
(list (float)) – a list of neighbour overlaps of the points
- return_overlap_coords(coords1, coords2, k=30)[source]
Return the neighbour overlap between two subspaces defined by two sets of coordinates.
An overlap of 1 means that in the two subspaces all points have an identical neighbourhood.
- Parameters:
coords1 (list(int)) – the list of coordinates defining the first subspace
coords2 (list(int)) – the list of coordinates defining the second subspace
k (int) – the number of neighbours considered for the overlap
- Returns:
(float) – the neighbour overlap of the two subspaces
- return_ranks_present_for_all_weights(cause_present, effect_present, weights, period_cause=None, period_effect=None)[source]
Return the nearest neighbors’ indices in space (weight*cause_present, effect_present) for all weights.
- Parameters:
cause_present (np.ndarray(float)) – N x D1 matrix, putative driver system data set at time 0
effect_present (np.ndarray(float)) – N x D2 matrix, putative driven system data set at time 0
weights (list(float), np.ndarray(float)) – scaling parameters for the driver system at time 0
period_cause (int,float,np.ndarray(float)) – periods of variables in ‘cause_present’
period_effect (int,float,np.ndarray(float)) – periods of variables in ‘effect_present’
- Returns:
ranks_present (np.ndarray(float)) – array of shape (N_weights, N, maxk+1), containing N_weights matrices (N, maxk+1) corresponding to the values of the scaling parameters in ‘weights’