#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代码(原创)的更多相关文章

  1. 零基础学python之函数与模块(附详细的代码和安装发布文件过程)

    代码重用——函数与模块 摘要:构建函数,创建模块,安装发布文件,安装pytest和PEP 8插件,确认PEP8兼容性以及纠错 重用代码是构建一个可维护系统的关键. 代码组是Python中对块的叫法. ...

  2. 【原创】Python 使用jmpy模块加密|加固 python代码

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 使用jmpy模块 将py文件加密为so或 ...

  3. 神经网络BP算法C和python代码

    上面只显示代码. 详BP原理和神经网络的相关知识,请参阅:神经网络和反向传播算法推导 首先是前向传播的计算: 输入: 首先为正整数 n.m.p.t,分别代表特征个数.训练样本个数.隐藏层神经元个数.输 ...

  4. 涨见识了,在终端执行 Python 代码的 6 种方式!

    原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...

  5. 上传自己的Python代码到PyPI

    一.需要准备的事情 1.当然是自己的Python代码包了: 2.注册PyPI的一个账号. 二.详细介绍 1.代码包的结构: application \application __init__.py m ...

  6. ROS系统python代码测试之rostest

    ROS系统中提供了测试框架,可以实现python/c++代码的单元测试,python和C++通过不同的方式实现, 之后的两篇文档分别详细介绍各自的实现步骤,以及测试结果和覆盖率的获取. ROS系统中p ...

  7. python代码缩进

    习惯了java,c++之类的宽容,初学python,被它摆了道下马威,写if else,竟然必须要我正确用缩进格式,原来在python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩 ...

  8. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  9. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

随机推荐

  1. 【笔记】计算机原理,网络,Linux操作系统

    一,计算机原理 1,化繁为简的思想,产生二进制,产生把所有计算归结为加法运算 二,网络 1,分层思想,产生ISO七层协议,商用了TCP/IP的五层协议 三,Linux操作系统 1,分层思想,硬件-&g ...

  2. PhoenixFD插件流体模拟——UI布局【Resimulation】详解

    Liquid Resimulation 流体再(重)渲染 本文主要讲解Resimulation折叠栏中的内容 主要内容 Overview 综述 Parameters 参数 综述 Liquid Resi ...

  3. H5学习的例子

    https://github.com/NalvyBoo/HTML5   https://github.com/yujinjin/fans   github看到这里 https://github.com ...

  4. 【转载】重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...

  5. Python:每日一题005

    题目: 输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析: 我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x> ...

  6. zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP

    阅读zeromq guide的一些学习记录 zeromq官方例子 在VC下运行会有些跨平台的错误 我这里有做修改 稍后会发布出来 相关的代码与库  http://download.zeromq.org ...

  7. Monotonic Array LT896

    An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...

  8. SPOJ - AMR11B

    题目链接:https://www.spoj.com/problems/AMR11B/en/ 题目大意就是要你求图形覆盖的格点数,标记每个图形里的未标记格点(包括边界),总标记数就是覆盖的总格点数. # ...

  9. SAS DATA步读取数据

    上面一节讲了SAS的基本概念,以及语法结构,这次主要讲解SAS DATA步读取数据.    1 ·列表输入    2 ·按列输入    3 ·格式化输入  使用DATA步读取数据的基本形式如下: DA ...

  10. CentOs7安装PHP

    来源:https://jingyan.baidu.com/article/2d5afd692df18d85a3e28e4c.html 一.下载源码 1.cd /usr/local/src/ 2. 执行 ...