私はそれを見つけることができないか、おそらく統計とその用語に関する私の知識がここで問題ですが、PyPI の LDA libの下部ページにあるグラフに似たものを達成し、その均一性/収束を観察したいと考えています行。Gensim LDAでこれを達成するにはどうすればよいですか?
6176 次
1 に答える
14
モデルフィッティングの収束をプロットしたいのは当然です。残念ながら、Gensim はこれを非常に単純化していないようです。
モデル フィッティング関数の出力を分析できるように、モデルを実行します。ログファイルをセットアップするのが好きです。
import logging logging.basicConfig(filename='gensim.log', format="%(asctime)s:%(levelname)s:%(message)s", level=logging.INFO)
eval_every
でパラメータを設定しますLdaModel
。この値が低いほど、プロットの解像度が高くなります。ただし、perplexity を計算すると、フィットが大幅に遅くなる可能性があります。lda_model = LdaModel(corpus=corpus, id2word=id2word, num_topics=30, eval_every=10, pass=40, iterations=5000)
ログ ファイルを解析し、プロットを作成します。
import re import matplotlib.pyplot as plt p = re.compile("(-*\d+\.\d+) per-word .* (\d+\.\d+) perplexity") matches = [p.findall(l) for l in open('gensim.log')] matches = [m for m in matches if len(m) > 0] tuples = [t[0] for t in matches] perplexity = [float(t[1]) for t in tuples] liklihood = [float(t[0]) for t in tuples] iter = list(range(0,len(tuples)*10,10)) plt.plot(iter,liklihood,c="black") plt.ylabel("log liklihood") plt.xlabel("iteration") plt.title("Topic Model Convergence") plt.grid() plt.savefig("convergence_liklihood.pdf") plt.close()
于 2017-08-19T20:48:27.357 に答える