'Partially fit underlying estimators
Should be used when memory is inefficient to train all data. Chunks
of data can be passed in several iteration, where the first call
should have an array of all target variables.
Parameters
X : (sparse) array-like, shape = [n_samples, n_features]
Data.
y : array-like, shape = [n_samples]
Multi-class targets.
classes : array, shape (n_classes, )
Classes across all calls to partial_fit.
Can be obtained via `np.unique(y_all)`, where y_all is the
target vector of the entire dataset.
This argument is only required in the first call of partial_fit
and can be omitted in the subsequent calls.
Returns
self'

@if_delegate_has_method(delegate='estimator')
def partial_fit(self, X, y, classes=None):

    if _check_partial_fit_first_call(self, classes):
        self.estimators_ = [clone(self.estimator) for i in range(((self.n_classes_ * (self.n_classes_ - 1)) // 2))]
    if len(np.setdiff1d(y, self.classes_)):
        raise ValueError('Mini-batch    contains    {0}    while    it    must    be    subset    of    {1}'.format(np.unique(y), self.classes_))
    (X, y) = check_X_y(X, y, accept_sparse=['csr', 'csc'])
    check_classification_targets(y)
    combinations = itertools.combinations(range(self.n_classes_), 2)
    self.estimators_ = Parallel(n_jobs=self.n_jobs)((delayed(_partial_fit_ovo_binary)(estimator, X, y, self.classes_[i], self.classes_[j]) for (estimator, (i, j)) in izip(self.estimators_, combinations)))
    self.pairwise_indices_ = None
    return self
