主成分分析算法

一、算法介绍

主成分分析:用较少的综合变量尽可能多地反映原来信息地统计方法

原理:

PCA的主要目标是将特征维度变小,同时尽量减少信息损失。就是对一个样本矩阵,一是换特征,找一组新的特征重新标识;二是减少特征,新特征的数目要远少于原特征的数目

通过PCA将n维原始特征映射到k维(k<n),称这k维特征为主要成分

注意:样本方差是除以n-1的  

特征值和特征向量通过软件辅助函数计算

 特征值与特征向量是一一对应的

二、样例

第(6)步的样例如下:

 

说明:此方法一般用于降维,再结合其他方法进行评价。 

三、代码展示 

import pandas as pd
import numpy as np
from scipy import linalg
#scipy是python的科学计算库
#linalg涉及线性方程、线性函数以及它们通过矩阵和向量空间的表示

#读取excel文件的B:G列,除去第一行(标题)
df=pd.read_excel('棉花产量论文作业的数据.xlsx',usecols='C:G')
#df.to_numpy将数据转化为Numpy数组
x=df.to_numpy()
#标准化数据
#np.mean(x, axis=0):计算矩阵 x 的每一列的均值。
#np.std(x, ddof=1, axis=0):计算矩阵 x 的每一列的标准差。其中,ddof=1 表示使用样本标准差(即除以 𝑛−1而不是 n)。
X=(x-np.mean(x,axis=0))/np.std(x,ddof=1,axis=0)
#计算协方差矩阵
R=np.cov(X.T)
#计算特征值和特征向量
eig_val,eig_vec=linalg.eigh(R)
#将特征值数组按降序排列
eig_val=eig_val[::-1]
#将特征向量矩阵的列按降序排列
eig_vec=eig_vec[:,::-1]
#计算主成分的贡献率和累计贡献率
cti_rate=eig_val/sum(eig_val)
#计算累计和
cum_cti=np.cumsum(cti_rate)
#打印结果
print(eig_val)
print(eig_vec)
print(cti_rate)
print(cum_cti)
import numpy as np
from sklearn.decomposition import PCA
import pandas as pd
data=pd.read_excel('附件1.xlsx')
featrue=data.columns[:]
print(featrue)
data=data[featrue]
md=PCA().fit(data)
print('特征值为:',md.explained_variance_)
print('各成分的贡献率:',md.explained_variance_ratio_)
print('奇异值为:',md.singular_values_)
print('各成分的系数:\n',md.components_)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值