def score_data(self, data, feature):
        if len(data.domain.class_vars) != 1:
            raise ValueError("ReliefF requires one single class")
        if not data.domain.class_var.is_discrete:
            raise ValueError("ReliefF supports classification; use RReliefF "
                             "for regression")
        if len(data.domain.class_var.values
               ) == 1:  # Single-class value non-problem
            return 0 if feature else np.zeros(data.X.shape[1])
        if isinstance(self.random_state, np.random.RandomState):
            rstate = self.random_state
        else:
            rstate = np.random.RandomState(self.random_state)

        from Orange.preprocess._relieff import relieff

        weights = np.asarray(
            relieff(
                data.X,
                data.Y,
                self.n_iterations,
                self.k_nearest,
                np.array([a.is_discrete for a in data.domain.attributes]),
                rstate,
            ))
        if feature:
            return weights[0]
        return weights
Exemple #2
0
    def score_data(self, data, feature):
        if len(data.domain.class_vars) != 1:
            raise ValueError('ReliefF requires one single class')
        if not data.domain.class_var.is_discrete:
            raise ValueError('ReliefF supports classification; use RReliefF '
                             'for regression')
        if len(data.domain.class_var.values) == 1:  # Single-class value non-problem
            return 0 if feature else np.zeros(data.X.shape[1])

        from Orange.preprocess._relieff import relieff
        weights = np.asarray(relieff(data.X, data.Y,
                                     self.n_iterations, self.k_nearest,
                                     np.array([a.is_discrete for a in data.domain.attributes])))
        if feature:
            return weights[0]
        return weights