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 较差的机器上,因此有必要进行一定的代码优化 ...
随机推荐
- NLTK 统计词频
import nltk Freq_dist_nltk = nltk.FreqDist(list) for k,y in Freq_dist_nltk: print str(k),str(y)
- Linux - 操作系统的发展史
操作系统的发展史(科普章节) 目标 了解操作系统的发展历史 知道 Linux 内核及发行版的区别 知道 Linux 的应用领域 01. 操作系统的发展历史 1.1 Unix 1965 年之前的时候,电 ...
- 复用微信小程序源码包后仍然有原小程序的版本管理怎么处理
前言: 复用微信小程序源码包后,重新创建项目导入源码包,会发现开发者工具版本管理中仍然有原来小程序的版本,这样就不太好了.毕竟是一个新的小程序,需要有新的版本控制的.那么这个问题怎么处理呢? 解决方案 ...
- adb pull 文件夹到电脑
正常来讲是支持文件夹的. 但实际执行的时候发现: pull: building file list...0 files pulled. 0 files skipped. 其实出现这个提示,归根到底还是 ...
- C++中的仿函数
仿函数:实质就是重载了小括号(),通过类,定义一个对象,对象可以被实例化,具有内存可以存储数据,把需要比较的数据事先给到类对象的成员,这样在比较两个值的时候,可以只传入需要被比较的值即可.因为比较的值 ...
- for循环,列表,元组
依旧是python基础 for循环 s = 'woeudbwieb' for i in s:#s代表可迭代对象 print(i) if 'c' not in s: print('没有c') 列表 每个 ...
- goaccess
找了各种工具,最终还是觉得goaccess不仅图文并茂,而且速度快,每秒8W 的日志记录解析速度,websocket10秒刷新统计数据,站在巨人肩膀上你也会看得更远…先上图: 具体方案如下步骤: 一 ...
- playframework 一步一步来 之 日志(一)
日志模块是一个系统中必不可少的一部分,它可以帮助我们写程序的时候查看错误信息,利于调试和维护,在业务面,它也可以记录系统的一些关键性的操作,便于系统信息的监控和追踪. play的日志是基于logbac ...
- SQL 不常用的一些命令sp_OACreate,xp_cmdshell,sp_makewebtask
开启和关毕xp_cmdshell EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cm ...
- 73.解决Xcode10 library not found for -lstdc++ 找不到问题
Xcode10 彻底废除了libstdc++,相关文件libstdc++.6.0.9.dylib.libstdc++.6.dylib.libstdc++.dylib.libstdc++.6.0.9.t ...