引言:最近几天帮几个人工智能专业的同学做了一些机器学习课程的大作业,我发现机器学习一些常见的数据处理方法他们并不会用程序表示出来,仅仅是停留在理论层面。那么今天我将就机器学习一些常见数据处理方式实现皮尔森矩阵及数据关系图,以便大家加深对皮尔森的理解,同时掌握一些机器学习数据处理的技巧。
首先介绍下机器学习,机器学习是将近20多年蓬勃发展的学问多各个领域学科,牵涉到概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。神经网络学说主要是的设计和研究一些让计算机系统可以系统会“自学”的推演算法。神经网络演算法是一类从统计数据中的系统会研究取得规律性,并借助规律性对不得而知的统计数据展开预测的推演算法。因为学习算法中涉及了大量的统计学理论,神经网络与统计数据推测习紧密联系最为紧密,也被称作统计学习理论。演算法的设计各个方面,神经网络学说注目可以构建的,系统化的自学演算法。很多假设难题归属于无程序中难以确定可玩性,所以部份的神经网络研究工作是研发更容易处置的近似算法。
而皮尔森系数作为机器学习数据处理的必备方式,其重要性不言而喻,今天我们就一步步搭建皮尔森矩阵数据并显示,并且我会在每个代码上都添加注释以方便理解。
首先介绍下皮尔森先关系数:皮尔森相关系数(Pearson correlation coefficient)也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数。皮尔森相关系数是用来反映两个变量线性相关程度的统计量。相关系数用r表示,其中n为样本量,分别为两个变量的观测值和均值。r描述的是两个变量间线性相关强弱的程度。r的绝对值越大表明相关性越强。
其公式理解为:样本的简单相关系数一般用r表示,其中n 为样本量, 分别为两个变量的观测值和均值。r描述的是两个变量间线性相关强弱的程度。r的取值在-1与+1之间,若r>0,表明两个变量是正相关,即一个变量的值越大,另一个变量的值也会越大;若r<0,表明两个变量是负相关,即一个变量的值越大另一个变量的值反而会越小。r 的绝对值越大表明相关性越强,要注意的是这里并不存在因果关系。若r=0,表明两个变量间不是线性相关,但有可能是其他方式的相关(比如曲线方式)。利用样本相关系数推断总体中两个变量是否相关,可以用t 统计量对总体相关系数为0的原假设进行检验。若t 检验显著,则拒绝原假设,即两个变量是线性相关的;若t 检验不显著,则不能拒绝原假设,即两个变量不是线性相关的
其程序步骤如下所示,首先使用numpy初始化一个随机数数组,每个随机数的范围为0到1。 数组应该为shape=1000,50
接着对步骤一创建所有行对之间的皮尔森相关性的相关矩阵,相关矩阵为shape=[1000,1000])。
然后使用步骤二得到的1000*1000皮尔森相关系数r的下三角值,用matplotlib,绘制100-bin的直方图(忽略对角线和对角线上方的所有像元)
通过直方图,关联大小为50的两个随机向量的估计r>0.75或r<-0.75的概率
在步骤一仅用10列的情况下重复步骤一至步骤三,考虑较小的样本如何影响直方图分布。
最后的输出部分:两张直方图,第一张是基于大小为50的向量相关性,用hist1标识,在直方图上方的标题处标明概率大小。第二张用则以10为载体,用hist2标识,同样也在直方图上方标题处标明概率大小。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

#关联大小为50的两个随机向量函数
def del50():
#使用numpy初始化一个随机数数组,每个随机数的范围为0到1.数组应该为shape=1000,50
a=np.random.rand(1000,50)
#对步骤一创建所有行对之间的皮尔森相关性的相关矩阵,相关矩阵为shape=[1000,1000])。
s=np.corrcoef(a)
#获取1000*1000皮尔森相关系数r的下三角值赋值给data,
data=[]
for i in range(1000):
for j in range(i):
data.append(s[i][j])

设置matplotlib正常显示中文和负号,否则中文乱码

    matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号"""

绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度
“”"
num=0
for i in range(1000):
for j in range(1000):
if s[i][j]>0.75 or s[i][j]<-0.75:
num+=1
percent=(num/1000000)*100
tit=“hist1概率为”+str(percent)+"%"
#绘制100个矩形的直方图
plt.hist(data, bins=100, normed=0, facecolor=“blue”, edgecolor=“black”, alpha=0.7)

显示横轴标签

    plt.xlabel("区间")

显示纵轴标签

    plt.ylabel("频数/频率")

显示图标题

    plt.title(tit)plt.show()

def del10():
#使用numpy初始化一个随机数数组,每个随机数的范围为0到1.数组应该为shape=1000,50
a=np.random.rand(1000,10)
#对步骤一创建所有行对之间的皮尔森相关性的相关矩阵,相关矩阵为shape=[1000,1000])。
s=np.corrcoef(a)
#获取1000*1000皮尔森相关系数r的下三角值赋值给data,
data=[]
for i in range(1000):
for j in range(i):
data.append(s[i][j])

设置matplotlib正常显示中文和负号,否则中文乱码

    matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号"""

绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度
“”"
num=0
for i in range(1000):
for j in range(1000):
if s[i][j]>0.75 or s[i][j]<-0.75:
num+=1
percent=(num/1000000)*100
tit=“hist2概率为”+str(percent)+"%"
#绘制100个矩形的直方图
plt.hist(data, bins=100, normed=0, facecolor=“blue”, edgecolor=“black”, alpha=0.7)

显示横轴标签

    plt.xlabel("区间")

显示纵轴标签

    plt.ylabel("频数/频率")

显示图标题

    plt.title(tit)plt.show()

del50()
del10()
最终显示的图片如下所示:


通过对直方图数据的比较我们很容易发现数据之间的相关性特征,故可得知数据分布存在着一定的规律,即大部分数据都存在一个合理的区间范围,故机器学习数据处理才具有可能性。这也是机器学习对数据做统计应用可行合理性的一个证明,要不然岂不是认为机器学习就是瞎猜的了。

机器学习必备知识之皮尔森系数实现相关推荐

  1. 从产品经理向人工智能产品经理进阶 | 机器学习必备知识

    http://www.woshipm.com/ai/2438283.html 以技术为主要驱动力的人工智能时代,人工智能产品经理一定需要学习人工智能相关技术.本文笔者将与大家讲述机器学习的相关知识. ...

  2. 【机器学习必备知识】NumPy线性代数详解

    NumPy 线性代数 前言 numpy.dot() numpy.vdot() numpy.inner() numpy.matmul numpy.linalg.det() numpy.linalg.so ...

  3. 收藏 | 那些机器学习必备知识

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 机器 ...

  4. Interview:人工智能岗位面试—人工智能岗位求职之机器学习算法工程师必备知识框架结构图

    Interview:人工智能岗位面试-人工智能岗位求职之机器学习算法工程师必备知识框架结构图 目录 机器学习算法工程师思维导图 机器学习算法工程师思维导图 后期继续更新-- 1.思维导图01

  5. 机器学习必备的数学知识,一次学会

    面对机器学习,初学者的阻塞点往往不在于机器学习本身,而是数学.机器学习是计算机技术,但它的底层是数学. 通常,在机器学习相关的教材中,通篇都是复杂的数学公式.初学者如果数学基础不牢固,面对满篇的数学公 ...

  6. 【机器学习-决策树模块-信息论相关必备知识】

    决策树--信息论必备知识 --------------------------------------------------------------------------------------- ...

  7. 【068】特征选择之 pearson 皮尔森系数 PimaIndiansdiabetes

    内容目录 一.pearson 皮尔森系数介绍二.pearson 皮尔森应用三.对皮尔森相关系数的通俗解 一.pearson 皮尔森系数介绍 皮尔森相关系数是一种最简单的,能帮助理解特征和响应变量之间关 ...

  8. 基于神经网络的智能对话系统(二)——机器学习背景知识

    2. 机器学习背景知识 本章简要回顾了深度学习和强化学习,这些学习与后续章节中的会话AI最相关. 2.1 机器学习基础 Mitchell(1997)将机器学习广义地定义为包括任何计算机程序,该计算机程 ...

  9. LeetCode0:学习算法必备知识:时间复杂度与空间复杂度的计算

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.算法是大厂.外企面试的必备项,也是每个高级程序员的必备技能.针对同一问题,可以有很多种算法来解决,但不同的算法在效率和占用存储空间上 ...

最新文章

  1. 10 个 Python 工程师,9 个不合格!
  2. golang 检查ip地址格式 是否正确
  3. 信息管理系统(Servlet+jsp+mvc+jdbc)
  4. 用Visual Studio .Net 2003开发PHP程序
  5. 跨服务器上传文件方式
  6. div弹窗如何设置不超出页面_js实现弹窗功能(以支付方式为例)
  7. 【计算机科学基础】ASCII码表知识总结
  8. 北京工商大学c语言复试试题,2016年北京工商大学计算机与信息工程学院C语言程序设计复试笔试仿真模拟题...
  9. 工作中学习,学习中成长
  10. Python3内置模块2-logging(转)
  11. 又补充研究了OPENJDK LINUX版本打印变形字体的问题
  12. 杭电oj-----叠筐
  13. 在哪里可以找水系图_请问在哪可以找到广西的水系图
  14. 纯js实现类似淘宝星级评分功能
  15. 坚守13年的极飞,终靠“务农”拿下12亿融资!专访彭斌:要为行业找技术,而不是为技术找行业...
  16. L1-039 古风排版 (Java)
  17. 如何设置IE禁用代理服务器
  18. OpenERP-指定动作视图
  19. 无法从服务器中获取信息吗,无法从服务器获取信息
  20. 仿照Windows的计算器,编写一个简易的计算器程序,实现加、减、乘、除等运算。

热门文章

  1. linux指令lpr,linux命令 test/lpr
  2. java 复制流_Java8流的复制
  3. 云计算的“傲慢”与“偏见”
  4. 流感病毒爆发,科技带来希望?谷歌成功预测H1N1流感病毒
  5. 设置Visual Studio颜色主题
  6. 如何关闭iOS系统自动更新提示?
  7. Java基础教程:k8s快速入门
  8. Vsftpd 详细配置
  9. 20套大屏可视化模板大放送,分分钟做出酷炫的可视化大屏不是梦
  10. 如何进行快速高效的学习