PCA历程详细python代码(原创)
#PCA主成分分析,原文为文末的链接,代码为自己亲自手码 def cov_out1(dx,dy):
#第一步:求解x,y各自的均值
mean_x=0
mean_y=0
for i in range(len(dx)):
mean_x+=dx[i]
mean_y+=dy[i]
# print(i)
mean_x/=len(dx)
mean_y/=len(dy)
# print('mean_x:',mean_x)
# print('mean_y:',mean_y)
#第二步:求解xy的联合均值
mean_xy=0
for i in range(len(dx)):
mean_xy+=dx[i]*dy[i]
mean_xy/=len(dy)
# print('mean_xy',mean_xy) return mean_xy-mean_x*mean_y
# def cov_out2(dx,dy):
#第一步:求解x,y各自的均值
mean_x=0
mean_y=0
for i in range(len(dx)):
mean_x+=dx[i]
mean_y+=dy[i]
mean_x/=len(dx)
mean_y/=len(dy)
# print('mean_x:',mean_x)
# print('mean_y:',mean_y)
#第二步:求解联合均值
mean_x_y=0
for i in range(len(dx)):
mean_x_y+=(dx[i]-mean_x)*(dy[i]-mean_y)
# print('mean_x_y',mean_x_y)
return mean_x_y/len(dx)
# dx=[2.5,0.5,2.2,1.9,3.1,2.3,2.0,1.0,1.5,1.1]
dy=[2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9]
# print(len(dx))
# print(len(dy)) # covx=cov_out2(dx,dx)
# covy=cov_out2(dy,dy)
# print(covx)
# print(covy) # cov1=cov_out1(dx,dy)
# cov2=cov_out2(dx,dy)
# print(cov1)
# print(cov2) import numpy as np #第一步:求dx,dy的平均值
print('第一步:求dx,dy的平均值')
mean_x=np.mean(dx)
mean_y=np.mean(dy)
print(mean_x,mean_y) #第二步:求解DataAjust
print('第二步:求解DataAjust')
dx=dx-mean_x
dy=dy-mean_y
print(dx)
print(dy)
DataAdjust=np.vstack((dx,dy))
print(DataAdjust.T) covx=cov_out2(dx,dx)
covy=cov_out2(dy,dy)
covxy=cov_out2(dx,dy)
covyx=cov_out2(dy,dx)
print(covx)
print(covy)
print(covxy)
print(covyx) #第三步:求解特征值和特征向量
print('第三步:求解特征值和特征向量')
cov=np.array([[covx,covxy],[covyx,covy]])
print(cov) a,b=np.linalg.eig(cov)
print('特征值')
print(a)
print("特征矩阵")
print(b) #第四步:将特征值由大到小排序,选取其中最大的k个(这里是1个)
print('第四步:将特征值由大到小排序,选取其中最大的k个(这里是1个)')
a_max=np.max(a)
print(a_max)
a_index=np.where(a==a_max)[0][0]
print(a_index)
b_max=b[:,a_index]
print(b_max) #第五步:将样本点投影到选取的特征向量上
print('第五步:将样本点投影到选取的特征向量上')
finalData=np.dot(DataAdjust.T,b_max)
print(finalData)
引文:http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html
PCA历程详细python代码(原创)的更多相关文章
- 零基础学python之函数与模块(附详细的代码和安装发布文件过程)
代码重用——函数与模块 摘要:构建函数,创建模块,安装发布文件,安装pytest和PEP 8插件,确认PEP8兼容性以及纠错 重用代码是构建一个可维护系统的关键. 代码组是Python中对块的叫法. ...
- 【原创】Python 使用jmpy模块加密|加固 python代码
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 使用jmpy模块 将py文件加密为so或 ...
- 神经网络BP算法C和python代码
上面只显示代码. 详BP原理和神经网络的相关知识,请参阅:神经网络和反向传播算法推导 首先是前向传播的计算: 输入: 首先为正整数 n.m.p.t,分别代表特征个数.训练样本个数.隐藏层神经元个数.输 ...
- 涨见识了,在终端执行 Python 代码的 6 种方式!
原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...
- 上传自己的Python代码到PyPI
一.需要准备的事情 1.当然是自己的Python代码包了: 2.注册PyPI的一个账号. 二.详细介绍 1.代码包的结构: application \application __init__.py m ...
- ROS系统python代码测试之rostest
ROS系统中提供了测试框架,可以实现python/c++代码的单元测试,python和C++通过不同的方式实现, 之后的两篇文档分别详细介绍各自的实现步骤,以及测试结果和覆盖率的获取. ROS系统中p ...
- python代码缩进
习惯了java,c++之类的宽容,初学python,被它摆了道下马威,写if else,竟然必须要我正确用缩进格式,原来在python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩 ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- [转] Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
随机推荐
- 100-days: seventeen
Title: How 'Bohemian Rhapsody(波西米亚狂想曲)' ended up in 'Wayne's World(反斗智多星)' and became a phenomenon(现 ...
- Python练习-迭代-2018.11.28
#遍历list L=['a','b','c','d'] l=[] a=0 for n in L: l.insert(a,n) a=a+1 print(l) #遍历dict里的key,导出为list L ...
- 491. Increasing Subsequences增长型序列
[抄题]: Given an integer array, your task is to find all the different possible increasing subsequence ...
- Django model进阶
Django-model进阶 QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Ent ...
- Annotation 标注
1.画出基本图 当图线中某些特殊地方需要标注时,我们可以使用 annotation. matplotlib 中的 annotation 有两种方法, 一种是用 plt 里面的 annotate,一种是 ...
- C# 检测证书是否安装、 安装证书
检测是否存在指定的证书: /// <summary> /// 检测是否存在指定的证书 /// </summary> /// <returns></return ...
- 查看memcached连接数
netstat -n | grep : | wc -l
- PowerShell 脚本中调用密文密码
1. 把密码转变为加密的字符串.使用命令 ConvertFrom-SecureString Read-Host "Enter Password" -AsSecureString | ...
- Win 10 安装手机驱动
直接上图,看图操作即可.
- 【APP测试(Android)】--客户端数据库