'Online VB with Mini-Batch update.
Parameters
X : array-like or sparse matrix, shape=(n_samples, n_features)
Document word matrix.
Returns
self'

def partial_fit(self, X, y=None):

    self._check_params()
    X = self._check_non_neg_array(X, 'LatentDirichletAllocation.partial_fit')
    (n_samples, n_features) = X.shape
    batch_size = self.batch_size
    if (not hasattr(self, 'components_')):
        self._init_latent_vars(n_features)
    if (n_features != self.components_.shape[1]):
        raise ValueError(('The    provided    data    has    %d    dimensions    while    the    model    was    trained    with    feature    size    %d.' % (n_features, self.components_.shape[1])))
    n_jobs = _get_n_jobs(self.n_jobs)
    with Parallel(n_jobs=n_jobs, verbose=max(0, (self.verbose - 1))) as parallel:
        for idx_slice in gen_batches(n_samples, batch_size):
            self._em_step(X[idx_slice, :], total_samples=self.total_samples, batch_update=False, parallel=parallel)
    return self
