1、简单介绍:
EOF是一种分析矩阵数据中的结构特征,提取主要数据特征量的一种方法。EOF又名PCA.(嘿嘿先这么想,其实在python里就一个函数鸭,PCA可以额外写一篇进行解释,这里只写一下应用啦)。Lorenz在1950年代首次将其引入气象和气候研究。
2、原理
选定要分析的数据,进行数据预处理,通常处理成距平的形式。得到一个数据矩阵Xm×n.
数据大概就是这样的:这个原出处我也没找到,就是给大家看看数据格式。


(1)开始导入包

import pandas as pd
import numpy as np

(2)把数据转换成距平和把数据标准化。

line = np.mean(data,axis=1)
data = np.array(data)
line = np.array(line)
for i in range(line.shape[0]):data[i,:]=data[i,:]-line[i]
mu = np.mean(data, axis=0)
sigma = np.std(data, axis=0)
data = (data - mu) / sigma

(3)计算X与其转置矩阵XT的交叉积,得到方阵并求出特征值
Cm×m = 1/n×X × XT
如果X是已经处理成了距平的话,则C称为协方差阵;如果X已经标准化(即C中每行数据的平均值为0,标准差为1),则C称为相关系数阵。
这里我把我对标准化的理解说一下,我感觉这个东西是用来处理一种多维tensor可能不同的变量的方差啊等数据差异很大的问题。如X={X1,X2},X1的方差等数据远远大于X2,如果求欧几里得距离等操作的话X1对结果影响远大于X2,所以要进行标准化。

计算特征值和特征向量:

import pandas as pd
import numpy as np
import cmatheof_data =pd.read_csv(r'C:/Users/13056/Desktop/气温.csv',encoding = 'gb2312')
data = eof_data.drop(['站点'],axis=1)#来一手数据标准化
mean = np.mean(data, axis=0)  # 求平均值
std = np.std(data, axis=0)    # 标准差
data_zcore = (data - mean)/std
#求交叉积
data1 = np.array(data_zcore)
data2 = np.array(data_zcore.T)
data_eof = (np.dot(data1,data2))/data1.shape[1]eigenvalue,featurevector=np.linalg.eig(data_eof)
#这里说一下eigenvalue是特征值,featurevector是特征向量,俺用库做的,因为懒。

(4)求时间系数矩阵

#3求时间系数矩阵
data_e = np.zeros([data1.shape[0],data1.shape[0]])
i =0
sum1=0
for e in eigenvalue:sum1+=edata_e [i][i]=ei+=1data_T = data_e.T.dot(data1)

(5)求方差贡献率

R = []
for e in eigenvalue:k = e/sum1R.append(k)

(6)我要拿特征根大于1的数据,一共五个

i = 0
for e in eigenvalue:if e>1 :i += 1else:break
l_R = R[0:i]
l_eigenvalue = eigenvalue[0:i]
l_featurevector = featurevector[0:i]
l_eigenvalue = eigenvalue[0:i]
l_data_T =data_T[0:i]

(7)显著性检验(重点!!!)

ca=[]
ca.append(l_eigenvalue[0])
ej = l_eigenvalue *cmath.sqrt(2/i)
for m in range(i-1):if (l_eigenvalue[m+1]-l_eigenvalue[m])>=ej[m]:ca.append(l_eigenvalue[m+1])

3、画图


具体是用Echarts写的。点击这里

机器学习实践笔记(二)EOF相关推荐

  1. 机器学习实践笔记(一)KNN

    主要是参考机器学习实践(作者peter harrington) 优点:精度高,对异常值不敏感,无数据输入假定. 缺点:计算复杂度.空间复杂度高 适用数据:数值型和标称型 个人理解:数据型是连续数据,标 ...

  2. 机器学习入门 笔记(二) 机器学习基础概念

    第二章 机器学习基础概念 1.机器的数据 2.机器学习的主要任务 3.监督学习和非监督学习 4.批量.在线学习.参数.非参数学习 5.哲学思考 6.环境的搭建 1.机器的数据 我们以鸢尾花的数据为例. ...

  3. 机器学习学习笔记(二)---PR曲线

    学习笔记 PR曲线 一.P和R代表什么 TP FP TN FN 基本概念 P与R 的定义 评估PR曲线 二.绘制PR曲线 代码 参考文献 一.P和R代表什么 在信息检索中,我们经常会关心"检 ...

  4. 机器学习实践笔记(三)时间序列数据预测

    时间序列模型 1.拿到数据咱们开始分析 2.Arima 硬性基础知识 Arima模型 AR MA ARMA ARIMA 如何选择p值和q值 自相关函数ACF 建立Arima模型 数据的确定 模型预测 ...

  5. 吴恩达机器学习 Coursera 笔记(二) - 单变量线性回归

    Model and Cost Function 1 模型概述 - Model Representation To establish notation for future use, we'll us ...

  6. 吴恩达机器学习 Coursera 笔记(二) - 单变量线性回归...

    Model and Cost Function 1 模型概述 - Model Representation To establish notation for future use, we'll us ...

  7. 吴恩达“机器学习”——学习笔记二

    定义一些名词 欠拟合(underfitting):数据中的某些成分未被捕获到,比如拟合结果是二次函数,结果才只拟合出了一次函数. 过拟合(overfitting):使用过量的特征集合,使模型过于复杂. ...

  8. Spark机器学习实战 (十二) - 推荐系统实战

    0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...

  9. ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ

    ng机器学习视频笔记(二) --梯度下降算法解释以及求解θ (转载请附上本文链接--linhxx)   一.解释梯度算法 梯度算法公式以及简化的代价函数图,如上图所示. 1)偏导数 由上图可知,在a点 ...

最新文章

  1. 3寸以上java手机_7寸屏手机有哪些(堪称性价比之王的四款手机)
  2. 1-NET UX1000-实战-配置-Lync Server 2010-集成
  3. 基于JSP/SERVLET学生管理系统
  4. SQL SERVER中架构的理解
  5. vc 控制台添加托盘显示_开源:ESP8266读DHT11温湿度,小程序实时显示
  6. 如何构建一个流量无损的在线应用架构 | 专题尾篇
  7. NVIDIA显卡Linux驱动180.44正式版
  8. WinForm两点注意的地方
  9. JavaWeb--HttpSession案例
  10. python实现决策树ID3算法
  11. 日常英语:最近的药店在哪里
  12. 【OpneWRT】编译ipk
  13. srvany把程序作为Windows服务运行
  14. 在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES) 拒绝访问问题解决
  15. 微信公众号模板消息 换行
  16. www.gvlib video.php,求大佬帮忙
  17. CommonJS模块化
  18. AE使用函数集10:获取图层组中的所有图层
  19. 《飞轮效应》 - 系统动力学 - 增强回路 - 推荐序 /刘润
  20. 【小技巧】爆栈?栈的大小不够用怎么办?

热门文章

  1. Leetcode 1219.黄金矿工
  2. 连续型切片与离散加减的思路学习
  3. Cache之组相连映射
  4. python 实现SOM: 函数更新
  5. python 之发送邮件服务[原著] 海瑞博客
  6. vim的几个常用操作
  7. eclipse设置系统字体
  8. [Node.js] Module.Require机制研究
  9. timeSetEvent的用法(一)
  10. 关于setInterval设置倒计时只执行一次,clearInterval停止