降维分析3:稀疏主成分分析-python代码-R代码

目录

总体还是感觉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_spca)#稀疏主成分分析
X_transformed = transformer.transform(data_spca)#原始数据转换后的矩阵
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,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预测变量的贡献率

  • 1
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
现在,全球已进入互联网时代,在各个领域都能收集到丰富多样的数据信息.通过对这些数据信息的处理,可以更加丰富,具体的描述客观对象,帮助人们找到事物的本质规律,以致做出正确的判断与措施来提高社会资源利用率.但在实际问题应用中,这些海量的高维数据之间往往存在大量冗余.因此,如何对这些数据进行处理,找到数据之间的内在联系,已成为人们日益关注的问题.传统的主成分分析方法是很受欢迎的处理高维数据的降维工具,但其提取的成分的元素大都是非零的,这就很难去解释成分对应的具体特征是什么.稀疏主成分分析是在主成分分析的基础上得到的提取稀疏成分的算法.但稀疏主成分分析是线性分类工具,不能处理非线性数据,故本文将其与核函数结合得到了稀疏主成分分析方法.文章要分以下三个方面叙述.1.介绍了一些相关的范数定义,主成分分析(PCA),核主成分分析(KPCA),交替方向法(ADM),矩阵收缩法.此外,本文还总结了稀疏主成分分析算法的七种优化模型.2.稀疏主成分分析(SPCA)的目的是提取一些原始数据变量的线性组合并且这些组合在稀疏的同时尽可能多地保留原来的信息.本文考虑了测量方差的2L和L_1范数,诱导稀疏的L_0和L_1范数,以及约束和惩罚两种用途得到新的两种SPCA最优模型.然后将这两种模型与交替方向法结合得到了新的稀疏主成分分析方法.并在人工数据和真实数据上做了实验,最终证明了算法的有效性.3.由于生活中的数据大都是非线性的,因此本文根据主成分分析向核主成分分析推广的思想,将稀疏主成分分析与核函数结合,得到了稀疏主成分分析算法(SKPCA).在实验部分,本文分别使用了30个省市的农民家庭消费状况数据和二维人工生成样本数据来进行实验仿真.实验证明,这种方法可以有效的提取非线性数据的稀疏成分.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值