import numpy as np
from pylab import *
import matplotlib.pyplot as plt
dataMat = []
x_axis_data = [
15,16,20,20,35,38,42,44,45,45,50,56,57,62,65,70,80,85,55,65,78,80,87,97
]
y_axis_data = [
30,32,36,37,77,22,79,25,36,62,18,46,25,39,68,64,60,52,88,87,85,84,77,60
]
for i in range(0,len(x_axis_data)):
dataMat.append([x_axis_data[i],y_axis_data[i]])
print(dataMat)#原矩阵
k=1
# 设计pca函数
average = np.mean(dataMat, axis=0) #按列求均值
# print(average)
m, n = np.shape(dataMat)
meanRemoved = dataMat - np.tile(average, (m,1)) #减去均值
normData = meanRemoved / np.std(dataMat) #标准差归一化
# print(normData)
average = np.mean(normData, axis=0)
covMat = np.cov(normData.T) #求协方差矩阵
# covMat = np.cov(meanRemoved.T)
# print(covMat)
eigValue, eigVec = np.linalg.eig(covMat) #求协方差矩阵的特征值和特征向量
eigValInd = np.argsort(-eigValue) #返回特征值由大到小排序的下标
selectVec = np.matrix(eigVec.T[:k]) #因为[:k]表示前k行,因此之前需要转置处理(选择前k个大的特征值)
# print(covMat)
finalData = normData * selectVec.T #再转置回来
print(finalData)#pca之后的矩阵
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
pca.zip (2个子文件)
pca
屏幕截图 2021-10-21 161658.png 35KB
DM-pca.py 1KB
共 2 条
- 1
苏格拉没有鞋底
- 粉丝: 40
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0