Я использую входные данные из здесь (см. раздел 3.1).
Я пытаюсь воспроизвести их матрицу ковариации, собственные значения и собственные векторы, используя scikit-learn. Однако я не могу воспроизвести результаты, представленные в источнике данных. Я также видел эти входные данные в другом месте, но я не могу различить, есть ли проблема с scikit-learn, моими шагами или источником данных.
data = np.array([[2.5,2.4],
[0.5,0.7],
[2.2,2.9],
[1.9,2.2],
[3.1,3.0],
[2.3,2.7],
[2.0,1.6],
[1.0,1.1],
[1.5,1.6],
[1.1,0.9],
])
centered_data = data-data.mean(axis=0)
pca = PCA()
pca.fit(centered_data)
print(pca.get_covariance()) #Covariance Matrix
array([[ 0.5549, 0.5539],
[ 0.5539, 0.6449]])
print(pca.explained_variance_ratio_) #Eigenvalues (normalized)
[ 0.96318131 0.03681869]
print(pca.components_) #Eigenvectors
[[-0.6778734 -0.73517866]
[ 0.73517866 -0.6778734 ]]
Удивительно, что проекции соответствуют результатам из источника данных, описанного выше.
print(pca.transform(centered_data)) #Projections
array([[-0.82797019, 0.17511531],
[ 1.77758033, -0.14285723],
[-0.99219749, -0.38437499],
[-0.27421042, -0.13041721],
[-1.67580142, 0.20949846],
[-0.9129491 , -0.17528244],
[ 0.09910944, 0.3498247 ],
[ 1.14457216, -0.04641726],
[ 0.43804614, -0.01776463],
[ 1.22382056, 0.16267529]])
Вот что я не понимаю:
- Почему матрица ковариации отличается?
- Обновлено. Как получить собственные значения из scikit-learn, которые еще не нормализованы?