강하 차원 분석3: 희소 주성분 분석-python 코드-R 코드

4154 단어 강하 차원 분석
카탈로그
전체적으로 R 언어가 좋은 것 같아요.
1.python 코드
2. R 코드
다음은 공식 홈페이지에 소개되어 있습니다.
홈페이지에는 두 가지 실례가 있다.
얻은 결과는 다음과 같다.

전체적으로 R 언어가 좋은 것 같아요.


1.python 코드


먼저 기록해 두고, 주로 참고하다.https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.SparsePCA.html#sklearn.decomposition.SparsePCA
입력한 데이터는 n*m의 행렬이고 m는 변수의 개수이며 n은 몇 개의 변수 값입니까
다음은 정부 희소 주성분 분석 코드입니다.
>>> import numpy as np
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.decomposition import SparsePCA
>>> X, _ = make_friedman1(n_samples=200, n_features=30, random_state=0)
>>> transformer = SparsePCA(n_components=5, random_state=0)
>>> transformer.fit(X)
SparsePCA(...)
>>> X_transformed = transformer.transform(X)
>>> X_transformed.shape
(200, 5)
>>> # most values in the components_ are zero (sparsity)
>>> np.mean(transformer.components_ == 0)
0.9666...

다음은 자신을 위해 미세하게 조정한 후 실행에 성공한 코드입니다

import numpy as np
from sklearn.datasets import make_friedman1
from sklearn.decomposition import SparsePCA
data_spca = np.loadtxt('C:\\Users\\ASUS\\shuju.txt')#    

transformer = SparsePCA(n_components=5, random_state=0)
transformer.fit(data_spca1)#       
X_transformed = transformer.transform(data_spca1)#          
a = (transformer.components_)#           loading matrix
print(transformer.components_)

 

2. R 코드


elasticnet 패키지의 spca 함수를 사용합니다

다음은 공식 홈페이지에 소개되어 있습니다.


spca(x, K, para, type=c("predictor","Gram"),sparse=c("penalty","varnum"), use.corr=FALSE, lambda=1e-6,max.iter=200, trace=FALSE, eps.conv=1e-3)
x: A matrix. It can be the predictor matrix or the sample covariance/correlation matrix.예측 행렬???이게 무슨 뜻인지 모르겠어요??또는 원 데이터 집합의 합방차 또는 상관수 행렬
K:Number of components에서 얻은 희소 주원의 개수, 5라면 5개의 희소 주성분을 얻을 수 있으며, 각 희소 주성분은 각 변수의 하중을 포함한다.
para:A vector of length K. All elements should be positive. If sparse="varnum", the elements integers. item{type}{If type="predictor", x is the predictor matrix.If type="Gram", the function asks the user to provide the sample covariance or correlation matrix. } item {sparse} {If sparse = "penalty",para is a vector of 1-norm penalty parameters. 만약sparse = "penalty"는 k개의 벌칙 계수를 포함하는 그룹을 제시합니다.
If sparse="varnum", para defines the number of   sparse loadings to be obtained. 만약sparse="varnum"에 희소한 주원마다 받는 비제로 하중의 수량을 포함하는 그룹을 제시합니다}
\item{lambda}{Quadratic penalty parameter. Default value is 1e-6.}\item{use.corr}{Perform PCA on the correlation matrix? This option is   only effective when the argument type is set "data".}\item{max.iter}{Maximum number of iterations.}\item{trace}{If TRUE, prints out its progress.}\item{eps.conv}{Convergence criterion.}

홈페이지에는 두 가지 실례가 있다.


spca(pitprops, K=6, type="Gram",sparse="penalty",trace=TRUE,para=c(0.06,0.16,0.1,0.5,0.5,0.5)###sparse="penalty"를 사용하여 하나의 수조를 제시한다. 그 안에 k개의 벌칙 계수를 포함한다.
pitprops는 원시 데이터의 상관수 매트릭스입니다. type="Gram"때문에 원시 데이터의 협방차 매트릭스도 사용할 수 있습니다
spca(pitprops,K=6,type="Gram",sparse="varnum",trace=TRUE,para=c(7,4,1,1,1)##sparse="varnum"은 희소한 주원마다 받는 비제로 하중의 수량을 포함하는 그룹을 제시합니다}
 

얻은 결과는 다음과 같다.


The below are some quantities which the user may be interested in:  1.\item{loadings}{
The loadings of the sparse PCs 하중 매트릭스} 2.\item{pev} {Percentage of explained variance 각 희소 주성분의 기여율} 3.\item{var.all} {Total variance of the predictors 예측 변수의 기여도

좋은 웹페이지 즐겨찾기