def __init__(self, D:np.ndarray, secondary_distance_type:str, metric:str='distance', classes:np.ndarray=None, vectors:np.ndarray=None): """Initialize a hubness experiment""" IO._check_distance_matrix_shape(D) IO._check_valid_metric_parameter(metric) if secondary_distance_type not in SEC_DIST.keys(): raise ValueError("Requested secondary distance type unknown.") if classes is not None: IO._check_distance_matrix_shape_fits_labels(D, classes) if vectors is None: self.embedding_dim = None else: # got vectors IO._check_distance_matrix_shape_fits_vectors(D, vectors) self.embedding_dim = vectors.shape[1] self.original_distance = D self.secondary_distance_type = secondary_distance_type self.classes = classes self.vectors = vectors self.metric = metric self.n = D.shape[0] # Obtained later through functions: self.secondary_distance = None self.hubness = dict() self.anti_hubs = dict() self.max_hub_k_occurence = dict() self.knn_accuracy = dict() self.gk_index = None
def test_check_dist_vs_vectors(self): with self.assertRaises(TypeError): D = np.zeros((5, 5)) vectors = np.zeros((4, 5)) IO._check_distance_matrix_shape_fits_vectors(D, vectors)