def fit(self, X, y, sample_weight=None): assert isinstance(y, np.ndarray) assert len(y.shape) == 1, "only one-dimensional target is supported" self.labels = np.unique(y) self.labels.sort() for l0, l1 in self.iterate_labels(): if self.use_all_data: l0_vs_v1 = np.array(y >= l1, dtype='int') new_x = X else: l0_vs_v1 = np.zeros(y.shape) - 1.0 l0_vs_v1[y == l0] = 0 l0_vs_v1[y == l1] = 1 ii = logical_or(y == l0, y == l1) new_x = X[ii] e = clone(self.estimator) try: e.fit(new_x, l0_vs_v1, sample_weight=sample_weight) except TypeError: print("%s doesn't support `sample_weight`. Ignoring it.") e.fit(new_x, l0_vs_v1) self.estimators[(l0, l1)] = e
def mask_or(m1, m2): """Logical or of the mask candidates m1 and m2, treating nomask as false. Result may equal m1 or m2 if the other is nomask. """ if m1 is nomask: return make_mask(m2) if m2 is nomask: return make_mask(m1) if m1 is m2 and is_mask(m1): return m1 return make_mask(umath.logical_or(m1, m2))
def __call__(self, x): "Execute the call behavior." return umath.logical_or(umath.greater(x, self.y2), umath.less(x, self.y1))