如何使用Python计算矩阵的伪行列式

5

我有一个矩阵,在计算朴素贝叶斯分类器时未通过奇异性测试。我正在处理方程式中的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个回答

4
  1. 首先计算矩阵的特征值

    eig_values = np.linalg.eig(covarianceMatrix)

  1. 然后计算非零特征值的乘积(这等于矩阵的伪行列式值)

    pseudo_determinent = np.product(eig_values[eig_values > 1e-12])


我正在尝试实现这个解决方案,但是遇到了错误:“>”不支持元组和浮点数之间的实例。请问您知道如何解决吗?看起来我需要遍历元素。 - DRA

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接