从sklearn的PCA中获取特征值和特征向量。

8 浏览
0 Comments

从sklearn的PCA中获取特征值和特征向量。

如何获得PCA应用的特征值和特征向量?

from sklearn.decomposition import PCA
clf=PCA(0.98,whiten=True)      #保留98%的方差
X_train=clf.fit_transform(X_train)
X_test=clf.transform(X_test)

我在文档中找不到相关信息。

1. 我无法理解这里的不同结果。

编辑:

def pca_code(data):
    #原始实现
    var_per=.98
    data-=np.mean(data, axis=0)
    data/=np.std(data, axis=0)
    cov_mat=np.cov(data, rowvar=False)
    evals, evecs = np.linalg.eigh(cov_mat)
    idx = np.argsort(evals)[::-1]
    evecs = evecs[:,idx]
    evals = evals[idx]
    variance_retained=np.cumsum(evals)/np.sum(evals)
    index=np.argmax(variance_retained>=var_per)
    evecs = evecs[:,:index+1]
    reduced_data=np.dot(evecs.T, data.T).T
    print(evals)
    print("_"*30)
    print(evecs)
    print("_"*30)
    #使用scipy包
    clf=PCA(var_per)
    X_train=data.T
    X_train=clf.fit_transform(X_train)
    print(clf.explained_variance_)
    print("_"*30)
    print(clf.components_)
    print("__"*30)

2. 我希望获取所有特征值和特征向量,而不仅仅是满足收敛条件的缩减集合。

0