Я выполняю анализ PCA, используя Sklearn и GPflow . Я заметил, что выходные данные, возвращаемые обеими библиотеками, не совпадают.
Пожалуйста, смотрите ниже пример кода -
import numpy as np
from gpflow.models import PCA_reduce
from sklearn.decomposition import PCA
X = np.random.random((100, 10))
for n in range(1, 6):
X1 = PCA(n_components=n).fit_transform(X)
X2 = PCA_reduce(X, n)
print('[n=%d] allclose=%s' % (n, np.allclose(X1, X2)))
Ниже выводится -
[n=1] allclose=True
[n=2] allclose=False
[n=3] allclose=False
[n=4] allclose=False
[n=5] allclose=False
Соответствует только тогда, когда количество главных компонентов равно 1. Почему такое поведение?