Ваш PCA неполный, когда вы используете np.linalg.eig
, потому что после собственного разложения вы должны переупорядочить члены, чтобы собственные значения в диагональной матрице были в порядке убывания (это не является частью самого собственного разложения).Кроме того, eig docs не гарантирует какого-либо порядка в ваших результатах, тогда как SVD docs явно заявляет, что ваши значения возвращаются в порядке убывания.