Vâng, bạn là gần đúng. Tham số pca.explained_variance_ratio_
trả về một vectơ của phương sai được giải thích theo từng thứ nguyên. Do đó, pca.explained_variance_ratio_[i]
cho phương sai được giải thích chỉ bởi kích thước i + 1st.
Bạn có thể muốn thực hiện pca.explained_variance_ratio_.cumsum()
. Điều đó sẽ trả về một véc tơ x
sao cho x[i]
trả về phương sai tích lũy tích lũy được giải thích bởi thứ nguyên i + 1 đầu tiên.
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. ]
Vì vậy, trong dữ liệu đồ chơi ngẫu nhiên của tôi, nếu tôi chọn k=4
tôi sẽ giữ lại 93,3% của phương sai.
Nguồn
2015-09-30 03:32:38
T hank bạn rất nhiều! Giải thích tuyệt vời! Đôi khi hướng dẫn sử dụng Python được ghi lại/giải thích kém. Tôi hoàn toàn chứng ngộ! – Chubaka
Một câu hỏi nữa: khi chúng ta thực hiện PCA (n_components = 1), scikit tìm hiểu "PCA" lệnh thực hiện "Tính toán hiệp phương sai hiệp ước từ dữ liệu chuẩn hóa" & "Sử dụng phân tích giá trị đơn (SVD) để tính toán riêng biệt"? Tôi không thấy bất kỳ nơi nào để chọn các phương pháp khác để tính toán các eigenvectors trong Python scikit tìm hiểu mô-đun PCA. – Chubaka
Câu trả lời hay! điều này thực sự đã giúp tôi – Mikim