2016-06-01 42 views

答えて

1

モデルフィッティングの収束をプロットしたいとお考えください。 残念ながら、Gensimはこれを非常に単純なものにしていないようです。

  1. モデルフィッティング関数の出力を分析できるようにモデルを実行します。私はログファイルをセットアップするのが好きです。

    import logging 
    logging.basicConfig(filename='gensim.log', 
            format="%(asctime)s:%(levelname)s:%(message)s", 
            level=logging.INFO) 
    
  2. LdaModeleval_everyパラメータを設定します。この値が低いほど、プロットの分解能が向上します。しかし、混乱を計算することは、あなたのフィット感を大きく低下させる可能性があります!

    lda_model = 
    LdaModel(corpus=corpus, 
         id2word=id2word, 
         num_topics=30, 
         eval_every=10, 
         pass=40, 
         iterations=5000) 
    
  3. ログファイルを解析してプロットします。

    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() 
    
関連する問題