主成分分析 PCA

import numpy as np
data=np.array([[2.5,0.5,2.2,1.9,3.1,2.3,2.0,1.0,1.5,1.1],
               [2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9]])
p=np.average(data, axis=1)
xp=p[0]
yp=p[1]

# xp=0
# yp=0
# n=10
# for i in range(0,n):
#     xp+=data[0,i]/n
#     yp+=data[1,i]/n
#print(xp,yp)

dataadjust=np.zeros((2,n))
for i in range(0,n):
    dataadjust[0,i]=data[0,i]-xp
    dataadjust[1,i]=data[1,i]-yp
#print(dataadjust)

c=np.cov(dataadjust[0,:],dataadjust[1,:])
#print(c)

# s2x=0
# s2y=0
# for i in range(0,n):
#     s2x+=(dataadjust[0,i]**2)/(n-1)
#     s2y+=(dataadjust[1,i]**2)/(n-1)
# print(s2x,s2y)

# covxy=0
# for i in range(0,n):
#     covxy+=(dataadjust[0,i]*dataadjust[1,i])/(n-1)
# #print(covxy)
# c=np.array([[s2x,covxy],
#             [covxy,s2y]])
# print(c)

eigenvalues,eigenvectors=np.linalg.eig(c)
# print(eigenvalues) #特征值
# print(eigenvectors) #特征向量

a0=np.argsort(eigenvalues)
# a0=eigenvalues.sort(reverse=True)
# print(a0)
a=np.max(a0)
v=np.zeros((2,1))
for i in range(2):
    v[i,0]=eigenvectors[i,a]
print(v)
dt=dataadjust.T
print(dt)
finaldata=np.dot(dt,v)
finaldata
[[-0.6778734 ]
 [-0.73517866]]
[[ 0.69  0.49]
 [-1.31 -1.21]
 [ 0.39  0.99]
 [ 0.09  0.29]
 [ 1.29  1.09]
 [ 0.49  0.79]
 [ 0.19 -0.31]
 [-0.81 -0.81]
 [-0.31 -0.31]
 [-0.71 -1.01]]





array([[-0.82797019],
       [ 1.77758033],
       [-0.99219749],
       [-0.27421042],
       [-1.67580142],
       [-0.9129491 ],
       [ 0.09910944],
       [ 1.14457216],
       [ 0.43804614],
       [ 1.22382056]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值