私は平均して、私が試したの両方のガウス分布 ための標準偏差を有するガウス#2 にガウス#1からカルバック・ライブラー情報量を計算しようとしていますhttp://www.cs.cmu.edu/~chanwook/MySoftware/rm1_Spk-by-Spk_MLLR/rm1_PNCC_MLLR_1/rm1/python/sphinx/divergence.pyカルバック・ライブラー情報量、ガウスQMにPV、QV
def gau_kl(pm, pv, qm, qv):
"""
Kullback-Leibler divergence from Gaussian pm,pv to Gaussian qm,qv.
Also computes KL divergence from a single Gaussian pm,pv to a set
of Gaussians qm,qv.
Diagonal covariances are assumed. Divergence is expressed in nats.
"""
if (len(qm.shape) == 2):
axis = 1
else:
axis = 0
# Determinants of diagonal covariances pv, qv
dpv = pv.prod()
dqv = qv.prod(axis)
# Inverse of diagonal covariance qv
iqv = 1./qv
# Difference between means pm, qm
diff = qm - pm
return (0.5 *
(numpy.log(dqv/dpv) # log |\Sigma_q|/|\Sigma_p|
+ (iqv * pv).sum(axis) # + tr(\Sigma_q^{-1} * \Sigma_p)
+ (diff * iqv * diff).sum(axis) # + (\mu_q-\mu_p)^T\Sigma_q^{-1}(\mu_q-\mu_p)
- len(pm))) # - N
から、このコード平均が1つの数であると私はここにLen関数を理解していないので、私は平均して、入力として標準偏差が、コード(len(pm))
原因エラーの最後の行を使用します。
注。二組(すなわち、ガウス分布)が
この関数は、多変量の共分散行列の対角エントリを期待...あなたはまだ興味があれば私はscipy.stats.entropy