定义pca

def PCA(dataSet):
   #计算平均值
    n=len(dataSet)
    meanVal=np.mean(dataSet,axis=0) #axis=0 , Along the direction of the row
    #中心化及尺度变换
    CenteringMat=dataSet-meanVal
    StdVal=np.std(dataSet,axis=0)
    StdVal=(StdVal*np.sqrt(n))/np.sqrt(n-1)
    StandardMat=CenteringMat/StdVal
      
    #相关矩阵
    CorrMat=np.corrcoef(CenteringMat,rowvar=0)
    #特征值特征向量
    eigVals,eigVectors=np.linalg.eig(np.mat(CorrMat)) #eigenvalues and eigenvectors
    
    #排序(小-大)
    Index=np.argsort(eigVals)
    eigVals_ordered=eigVals[Index[::-1]]
    eigVectors_ordered=eigVectors[:,Index[::-1]]
    
    #t这些特征向量将构成后面对数据进行转换的矩阵,该矩阵则利用N个特征将原始数据转换到新空间中
    newdata=np.round(StandardMat.dot(eigVectors_ordered),4)
    newframe=pd.DataFrame(newdata)
    newCovMat=np.cov(newdata,rowvar=0)
     
        #k
    k=np.sqrt(eigVals_ordered[0]/np.min(eigVals_ordered))
    print('k:',k)
    if k>=15:
        print('k:Multicollinearity is present!')
    else:
        print('k:Non-Multicollinearity')
        
    m=np.sum(1/eigVals_ordered)
    print('m:',m)
    if m>=5*len(eigVals_ordered):
        print('m:Multicollinearity is present!')
    else:
        print('m:Non-Multicollinearity')
    
    
    print('\nOrdered eignvalues:\n',np.round(eigVals_ordered,3))
    print('\nEignvectors:\n',np.round(eigVectors_ordered,3))
    print('\nNew variance-covariance matrix:\n ',np.round(newCovMat,3))
    
    return newframe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值