R语言主成分分析之SVD

该博客介绍了如何在R语言中运用Singular Value Decomposition (SVD)进行主成分分析(PCA)。首先,对训练集进行标准化处理,然后计算协方差矩阵,并执行SVD分解。接着,保留部分主成分,进行ZCA白化,最后将测试集同样处理,完成特征的正交旋转和降维。
摘要由CSDN通过智能技术生成
 #全数据集PCA
    all_col_mean = colMeans(data.learn.x) #计算训练集每一列的均值
    data.learn.PCAx = data.learn.x
    cols = ncol(data.learn.x) #获取列数
    all_col_sd = apply(data.learn.x,2,sd)
    for (j in 1:cols){
      data.learn.PCAx[,j] =  data.learn.x[,j] - all_col_mean[j]
      data.learn.PCAx[,j] = data.learn.PCAx[,j]/all_col_sd[j]
    } #对训练集每一列特征值进行标准化
    
    data.learn.cov <- cov(data.learn.PCAx,data.learn.PCAx)#求协方差矩阵
    data.learn.svd = svd(data.learn.cov)#SVD分解为 U d V
    all_U <- data.learn.svd$u[,1:REDUCTION] #保留REDUCTION维,约一半
    lamda = 1/sqrt(data.learn.svd$d) #计算方差倒数
    lamda = lamda[1:REDUCTION] #选择前REDUCTION维
    for (i in 1:REDUCTION){
      all_U[,i] <-  all_U[,i] * lamda[i] #ZCA白化
    }
    data.learn.PCAx = data.learn.PCAx%*%all_U #原特征正交旋转并降维
    colnames(data.learn.PCAx) = c("V1","V2","V3","V4")
    
    data.valid.PCAx = data.valid.x
    for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值