如何用python获得方阵的伪行列式

时间:2016-03-20 16:33:46

标签: python numpy matrix naivebayes

我有一个矩阵,它没有通过单一测试,我正在计算朴素贝叶斯分类器。我正在处理方程的ln(det(sigma))部分。

if np.linalg.cond(covarianceMatrix) < 1/sys.float_info.epsilon:
    return np.log(np.linalg.det(covarianceMatrix))
else:
    return a pseudo determinant

当协方差矩阵是单数时,我必须找到伪行列式。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

  1. 首先计算矩阵的特征值
  2. 
        eig_values = np.linalg.eig(covarianceMatrix)
    
    
    1. 然后计算非零特征值的乘积(这等于矩阵的伪行列式值),
    2. 
          pseudo_determinent = np.product(eig_values[eig_values > 1e-12])
      
      

答案 1 :(得分:0)

你能用numpy的pinv来计算伪逆,然后用它来计算行列式吗? http://www.sosmath.com/matrix/inverse/inverse.html