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 较差的机器上,因此有必要进行一定的代码优化 ...
随机推荐
- day42 字段的增删改查详细操作
复习 # 1.表的详细操作 create table nt like ot; # 只复制表的结构包括约束 create table nt select * from ot where 1=2; # 复 ...
- elasticsearch5安装
环境: centos7 es 5.4.3 es安装 一.下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsear ...
- eclipse中tomcat可以start启动,无法debug启动的解决
设置断点,进行程序调试,但是debug启动tomcat,却无法启动,并且会报超时异常. 原因可能是eclipse和tomcat启动时读取文件发生冲突 去掉所有的断点,然后重新debug启动,再设置断点 ...
- OOm是否可以try catch ?
只有在一种情况下,这样做是可行的: 在try语句中声明了很大的对象,导致OOM,并且可以确认OOM是由try语句中的对象声明导致的,那么在catch语句中,可以释放掉这些对象,解决OOM的问题,继续执 ...
- 利用Sharding-Jdbc实现分表[z]
[z]https://www.cnblogs.com/codestory/p/5591651.html 你们团队使用SpringMVC+Spring+JPA框架,快速开发了一个NB的系统,上线后客户订 ...
- application/json和application/x-www-form-urlencoded使用选择
一.参考资料 选application/x-www-form-urlencoded还是application/json? @RequestBody应用 二.理解 1.@RequestBody的作用 注 ...
- 二 分析easyswoole源码(启动服务)
前文连接,阅读的时候最好参照EasySwoole2.1.2的源码 $inst->run();//启动服务 这里实际调用的是Core的start方法ServerManager::getInstan ...
- Elasticsearch tshark 封包分析 (转)
Elasticsearch tshark 封包分析 使用wireshark能解決許多網路問題,將側錄下來的封包傳至Elasticsearch上方便分析製作及時報表.tshark為wireshark的命 ...
- ABP Quartz 作业调度第三篇
1.第一步安装Abp.Quartz ,把他安装到核心层 核心模块添加对quarz的依赖, 领域层创建firstjob类 public class FirstJob : JobBase, ITransi ...
- eclipse启动时出现无法创建java虚拟机
最 近一直在用eclipse开发android程序,今天不知怎么的启动eclipse时就会出现Failed to create java virtual machine,无法打开eclipse程序,折 ...