'Following a decision list, for each instance, rules are tried in
order until one fires.
Parameters
X : ndarray
Classify this data.
Returns
res : ndarray, float
Probabilistic classification.'

def ordered_predict(self, X):

    num_classes = len(self.domain.class_var.values)
    probabilities = np.array([np.zeros(num_classes, dtype=float) for _ in range(X.shape[0])])
    status = np.ones(X.shape[0], dtype=bool)
    for rule in self.rule_list:
        curr_covered = rule.evaluate_data(X)
        curr_covered &= status
        status &= np.bitwise_not(curr_covered)
        probabilities[curr_covered] = rule.probabilities
    return probabilities
