Ответ 1
Да, ты почти прав. Параметр pca.explained_variance_ratio_
возвращает вектор дисперсии, объясняемый каждым измерением. Таким образом, pca.explained_variance_ratio_[i]
дает дисперсию, объясняемую исключительно я + 1-м измерением.
Возможно, вы захотите сделать pca.explained_variance_ratio_.cumsum()
. Это вернет вектор x
, так что x[i]
возвращает кумулятивную дисперсию, объясненную с помощью первых измерений я + 1.
import numpy as np
from sklearn.decomposition import PCA
np.random.seed(0)
my_matrix = np.random.randn(20, 5)
my_model = PCA(n_components=5)
my_model.fit_transform(my_matrix)
print my_model.explained_variance_
print my_model.explained_variance_ratio_
print my_model.explained_variance_ratio_.cumsum()
[ 1.50756565 1.29374452 0.97042041 0.61712667 0.31529082]
[ 0.32047581 0.27502207 0.20629036 0.13118776 0.067024 ]
[ 0.32047581 0.59549787 0.80178824 0.932976 1. ]
Таким образом, в моих данных случайных игрушек, если бы я выбрал k=4
, я бы сохранил 93,3% от дисперсии.