Пример #1
0
    def commit(self):
        data = self.data

        if self.data is not None:
            if not len(self.data):
                self.Outputs.data.send(self.data)
                self.modified = False
                return

            drop_mask = np.zeros(len(self.data), bool)

            attributes = []
            class_vars = []

            self.warning()
            self.Error.imputation_failed.clear()
            self.Error.model_based_imputer_sparse.clear()
            with self.progressBar(len(self.varmodel)) as progress:
                for i, var in enumerate(self.varmodel):
                    method = self.variable_methods.get(i, self.default_method)
                    if isinstance(method, impute.Model) and data.is_sparse():
                        self.Error.model_based_imputer_sparse()
                        continue

                    try:
                        if not method.supports_variable(var):
                            self.warning(
                                "Default method can not handle '{}'".format(
                                    var.name))
                        elif isinstance(method, impute.DropInstances):
                            drop_mask |= method(self.data, var)
                        else:
                            var = method(self.data, var)
                    except Exception:  # pylint: disable=broad-except
                        self.Error.imputation_failed(var.name)
                        attributes = class_vars = None
                        break

                    if isinstance(var, Orange.data.Variable):
                        var = [var]

                    if i < len(self.data.domain.attributes):
                        attributes.extend(var)
                    else:
                        class_vars.extend(var)

                    progress.advance()

            if attributes is None:
                data = None
            else:
                domain = Orange.data.Domain(attributes, class_vars,
                                            self.data.domain.metas)
                data = self.data.from_table(domain, self.data[~drop_mask])

        self.Outputs.data.send(data)
        self.modified = False
Пример #2
0
 def impute_one(method, var, data):
     # type: (impute.BaseImputeMethod, Variable, Table) -> Any
     if isinstance(method, impute.Model) and data.is_sparse():
         raise SparseNotSupported()
     elif isinstance(method, impute.DropInstances):
         return RowMask(method(data, var))
     elif not method.supports_variable(var):
         raise VariableNotSupported(var)
     else:
         return method(data, var)
Пример #3
0
 def impute_one(method, var, data):
     # type: (impute.BaseImputeMethod, Variable, Table) -> Any
     if isinstance(method, impute.Model) and data.is_sparse():
         raise SparseNotSupported()
     elif isinstance(method, impute.DropInstances):
         return RowMask(method(data, var))
     elif not method.supports_variable(var):
         raise VariableNotSupported(var)
     else:
         return method(data, var)
Пример #4
0
 def _check_and_set_data(data):
     self.clear_messages()
     if data and data.is_sparse():
         self.Warning.sparse_not_supported()
         return False
     if data is not None and len(data):
         if not data.domain.attributes:
             self.Warning.no_input_variables()
             data = None
         elif len(data.domain.attributes) > 2:
             self.Information.use_first_two()
     self.input_data = data
     self.btResetToInput.setDisabled(data is None)
     return data is not None and len(data)
Пример #5
0
 def _check_and_set_data(data):
     self.clear_messages()
     if data and data.is_sparse():
         self.Warning.sparse_not_supported()
         return False
     if data:
         if not data.domain.attributes:
             self.Warning.no_input_variables()
             data = None
         elif len(data.domain.attributes) > 2:
             self.Information.use_first_two()
     self.input_data = data
     self.btResetToInput.setDisabled(data is None)
     return bool(data)