Par définition, une matrice carrée ayant un déterminant nul ne devrait pas être inversible. Cependant, pour une raison quelconque, après avoir généré une matrice de covariance, je prends l'inverse avec succès, mais prendre le déterminant de la matrice de covariance se termine par une sortie de 0.0.numpy: Possible d'inverser la matrice des déterminants zéro?
Qu'est-ce qui pourrait éventuellement ne pas fonctionner? Ne devrais-je pas faire confiance à la sortie du déterminant, ou ne devrais-je pas faire confiance à la matrice de covariance inverse? Ou les deux?
Snippet de mon code:
cov_matrix = np.cov(data)
adjusted_cov = cov_matrix + weight*np.identity(cov_matrix.shape[0]) # add small weight to ensure cov_matrix is non-singular
inv_cov = np.linalg.inv(adjusted_cov) # runs with no error, outputs a matrix
det = np.linalg.det(adjusted_cov) # ends up being 0.0
Pourriez-vous nous montrer un exemple d'entrée et de sortie? Votre commentaire implique que vous essayez de rendre la matrice non-singulière, ce qui signifierait que la matrice devrait avoir un inverse valide. – BobChao87
Erreurs d'arrondi? –
Hmm, mon dataset est constitué de 28x28 images où j'utilise des pixels bruts comme caractéristiques, donc la sortie d'entrée serait trop grande pour être copiée, je pense (matrices de covariance 784x487). Je crois que l'ajout du poids entraîne une inversion valide - cependant, pourquoi le déterminant est-il alors nul? Si je n'ajoute pas le poids, j'obtiens l'erreur singulière d'algèbre lin. L'erreur d'arrondi s'appliquerait-elle au déterminant, où il arrondit à 0,0? – kk415kk