<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Hello,</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">I am running Latent Dirichlet Allocation 100 times on bootstrapped versions of a dataset, gathering up the topic_word matrix from each run (components_), and merging it into a final cleaner topic_word matrix. Because I am bootstrapping documents, not every document is in every run and so it isn't clear how to get a final merged doc_topic distribution. I was wondering if there is any way to run the LatentDirichletAllocation transform method with a pre-determined components_ matrix. I tried this out in a few ways none of which worked.</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><pre style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);word-wrap:normal;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit">from sklearn.decomposition import LatentDirichletAllocation as skLDA
mod = skLDA(n_topics=7, learning_method='batch', doc_topic_prior=.1,
            topic_word_prior=.1, evaluate_every=1)
mod.components_ = median_beta # my collapsed estimates of this matrix
topic_usage = mod.transform(word_matrix)</code></pre></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">crashes with:</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><pre style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);word-wrap:normal;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit">AttributeError: 'LatentDirichletAllocation' object has no attribute 'exp_dirichlet_component_'</code></pre></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">I try to correct this with:</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><pre style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);word-wrap:normal;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit">            mod.components_ = median_beta<br>            mod.exp_dirichlet_component_ = np.exp(<br>            _dirichlet_expectation_2d(mod.components_))<br>            mod</code>._init_latent_vars(components_.shape[1])</pre></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">and now transform will complete will run but the results don't match in the least what I would expect after looking at multiple LDA runs. Note that this kind of functionality is available for NMF where you can run:</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><div class="gmail_default">    (W, H, niter) = non_negative_factorization(wordmatrix, H=median_beta, n_components=median_beta.shape[0], update_H=False)</div></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Thanks for any insight or help you can provide.</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Best,</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">Dylan</div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small"><br></div></div>