def __call__(self, data): if isinstance(data, Instance): return self.negate != bn.anynan(data._y) if isinstance(data, Storage): try: return data._filter_has_class(self.negate) except NotImplementedError: pass r = np.fromiter((bn.anynan(inst._y) for inst in data), bool, len(data)) if self.negate: r = np.logical_not(r) return data[r]
def __call__(self, data): if isinstance(data, Instance): return self.negate == bn.anynan(data._y) if isinstance(data, Storage): try: return data._filter_has_class(self.negate) except NotImplementedError: pass r = np.fromiter((not bn.anynan(inst._y) for inst in data), bool, len(data)) if self.negate: r = np.logical_not(r) return data[r]
def __call__(self, data): if isinstance(data, Instance): return self.negate == bn.anynan(data._x) if isinstance(data, Storage): try: return data._filter_is_defined(self.columns, self.negate) except NotImplementedError: pass r = np.fromiter((not bn.anynan(inst._x) for inst in data), dtype=bool, count=len(data)) if self.negate: r = np.logical_not(r) return data[r]
def __call__(self, data): if isinstance(data, Instance): return self.negate != bn.anynan(data._values) if isinstance(data, Storage): try: return data._filter_is_defined(self.columns, self.negate) except NotImplementedError: pass r = np.fromiter((bn.anynan(inst._values) for inst in data), dtype=bool, count=len(data)) if self.negate: r = np.logical_not(r) return data[r]
def _filter_has_class(self, negate=False): if sp.issparse(self.Y): if negate: retain = self.Y.indptr[1:] != self.Y.indptr[-1:] + self.Y.shape[1] else: retain = self.Y.indptr[1:] == self.Y.indptr[-1:] + self.Y.shape[1] else: retain = bn.anynan(self.Y, axis=1) if not negate: retain = np.logical_not(retain) return Table.from_table_rows(self, retain)
def _filter_is_defined(self, columns=None, negate=False): if columns is None: if sp.issparse(self.X): remove = self.X.indptr[1:] != self.X.indptr[-1:] + self.X.shape[1] else: remove = bn.anynan(self.X, axis=1) if sp.issparse(self.Y): remove = np.logical_or(remove, self.Y.indptr[1:] != self.Y.indptr[-1:] + self.Y.shape[1]) else: remove = np.logical_or(remove, bn.anynan(self.Y, axis=1)) else: remove = np.zeros(len(self), dtype=bool) for column in columns: col, sparse = self.get_column_view(column) if sparse: remove = np.logical_or(remove, col == 0) else: remove = np.logical_or(remove, bn.anynan([col], axis=0)) retain = remove if negate else np.logical_not(remove) return Table.from_table_rows(self, retain)
def _filter_has_class(self, negate=False): if sp.issparse(self.Y): if negate: retain = (self.Y.indptr[1:] != self.Y.indptr[-1:] + self.Y.shape[1]) else: retain = (self.Y.indptr[1:] == self.Y.indptr[-1:] + self.Y.shape[1]) else: retain = bn.anynan(self.Y, axis=1) if not negate: retain = np.logical_not(retain) return Table.from_table_rows(self, retain)
def _filter_is_defined(self, columns=None, negate=False): if columns is None: if sp.issparse(self.X): remove = (self.X.indptr[1:] != self.X.indptr[-1:] + self.X.shape[1]) else: remove = bn.anynan(self.X, axis=1) if sp.issparse(self.Y): remove = np.logical_or(remove, self.Y.indptr[1:] != self.Y.indptr[-1:] + self.Y.shape[1]) else: remove = np.logical_or(remove, bn.anynan(self.Y, axis=1)) else: remove = np.zeros(len(self), dtype=bool) for column in columns: col, sparse = self.get_column_view(column) if sparse: remove = np.logical_or(remove, col == 0) else: remove = np.logical_or(remove, bn.anynan([col], axis=0)) retain = remove if negate else np.logical_not(remove) return Table.from_table_rows(self, retain)
def has_missing_class(self): """Return `True` if there are any missing class values.""" return bn.anynan(self.Y)
def has_missing(self): """Return `True` if there are any missing attribute or class values.""" return bn.anynan(self.X) or bn.anynan(self.Y)