'In contrast to the classic CN2 algorithm, all applicable rules
are taken into account even though CN2SD induces ordered rules.
For each instance, all rules are tried and those that fire are
collected. If a clash occurs, class probabilities (predictions)
of all collected rules are summed and weighted.
Notes
If no other rules fire, the default rule prediction is used.
Any other empty rules (a fallout most common in the domain of
weighted covering algorithms) are ignored.
Parameters
X : ndarray
Classify this data.
Returns
res : ndarray, float
Probabilistic classification.'

def predict(self, X):

    return self.unordered_predict(X)
