@Override
 public Nonconformity fit(DataFrame x, Vector y) {
   Objects.requireNonNull(x, "Input data is required.");
   Objects.requireNonNull(y, "Input target is required.");
   Check.argument(x.rows() == y.size(), "The size of input data and input target don't match");
   Classifier probabilityEstimator = classifier.fit(x, y);
   Check.state(
       probabilityEstimator != null
           && probabilityEstimator
               .getCharacteristics()
               .contains(ClassifierCharacteristic.ESTIMATOR),
       "The produced classifier can't estimate probabilities");
   return new ProbabilityEstimateNonconformity(probabilityEstimator, errorFunction);
 }