2017-09-16 5 views
0

J'essaie de faire l'analyse en composantes principales de l'ensemble de données breast_canser en utilisant Python sklearn. Et ne peut pas comprendre pourquoi les deux produits scalaires (3 composants) de vecteurs propres ne sont pas des zéros?Analyse en composantes principales - pourquoi les produits scalaires des vecteurs propres ne sont pas des zéros?

frst = pca.components_[0,:] 
scnd = pca.components_[1,:] 
thrd = pca.components_[2,:] 
orth1 = np.dot(frst,scnd) 
orth2 = np.dot(scnd, thrd) 
print(orth1.real) 
print(orth2.real) 

sur:

0,0

1.52655665886e-16

+3

Copie possible de [Est-ce que le calcul à virgule flottante est rompu?] (Https://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Sneftel

Répondre

3

arithmétique en virgule flottante ne sont pas toujours précis à 100% depuis les ordinateurs utilisent une quantité finie de chiffres pour représenter un nombre infini avec chiffres. 1.52655665886e-16 ~ machine epsilon la limite supérieure d'erreur relative due à opérations en virgule flottante, donc je compte comme 0.

EDIT: Vous pouvez également exécuter dans ce problème si votre matrice n'a pas des valeurs propres distinctes.