PCA算法讨论

11 题目的主要研究内容

PCA算法讨论:1.算法的原理介绍;

                        2.利用具体数据给出手动推演过程和上机实现过程

1.2 题目研究的工作基础或实验条件

(1)硬件环境(Intel(R) Core(TM) i7-6500UCPU@2.50GHz2.59 GHz)

(2)软件环境(python 语言)

13 设计思想

通过pca公式利用python语言进行编程推演,然后手算推导过程,与编程演算结果作对比,如果一致,则完成运行,否则重新推演。并且使用图形结合的方式展现出来。

14 流程图

PCA算法流程图:

15 主要程序代码(要求必须有注释)

import numpy as np

#设置一下np的输出格式

np.set_printoptions(threshold=100,precision= 4,suppress=True)

# 计算以下数据的协方差矩阵

# np.random.seed(0)

# # data = np.random.uniform(1,10,(10,2))

# data = np.random.randint(1,10,(5,2)) #整数

# data[:,1:] = 0.5*data[:,0:1]+np.random.randint(-2,2,(5,1))

data = np.array([[1, 1],

       [1, 3],

       [2, 3],

       [4, 4],

       [2, 4]])

#去中心化

data_norm = data-data.mean(axis = 0)

X = data_norm[:,0]

Y = data_norm[:,1]

# 定义协方差函数,输入X,Y能得到X,Y之间的协方差

def getcov(X,Y):

    covxy = ((X-X.mean())*(Y-Y.mean())).sum()/(len(X)-1)

return covxy

C = np.cov(data_norm.T)

#计算特征值和特征向量

vals, vecs = np.linalg.eig(C)

#重新排序,从大到小

vecs = vecs[:,np.argsort(-vals)]

vals = vals[np.argsort(-vals)]

k=1

Q = vecs[:,:k]

Y = np.matmul(data_norm,Q)

Print(Y)#二维降到一维结果

16 运行结果及分析

(可以抓取界面)

三维降二维结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小蜗牛,大大梦想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值