def _clone_modify(oversampler, class_label, y_in_cluster): """Clone and modify attributes of oversampler for corner cases.""" # Clone oversampler oversampler = clone(oversampler) # Not modify attributes case if isinstance(oversampler, RandomOverSampler): return oversampler # Select and modify oversampler n_minority_samples = Counter(y_in_cluster)[class_label] if n_minority_samples == 1: oversampler = RandomOverSampler() else: if hasattr(oversampler, 'k_neighbors'): oversampler.k_neighbors = _modify_nn( oversampler.k_neighbors, n_minority_samples ) if hasattr(oversampler, 'm_neighbors'): oversampler.m_neighbors = _modify_nn( oversampler.m_neighbors, y_in_cluster.size ) if hasattr(oversampler, 'n_neighbors'): oversampler.n_neighbors = _modify_nn( oversampler.n_neighbors, n_minority_samples ) return oversampler