引言:最近几天帮几个人工智能专业的同学做了一些机器学习课程的大作业,我发现机器学习一些常见的数据处理方法他们并不会用程序表示出来,仅仅是停留在理论层面。那么今天我将就机器学习一些常见数据处理方式实现皮尔森矩阵及数据关系图,以便大家加深对皮尔森的理解,同时掌握一些机器学习数据处理的技巧。
首先介绍下机器学习,机器学习是将近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. 电子小帮手电路中的设计原理
  2. 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结
  3. 如何导入给定名称的模块为字符串?
  4. 【NLP】简单学习一下NLP中的transformer的pytorch代码
  5. 最常用的ES6特性(转)
  6. matplotlib 高阶之Transformations Tutorial
  7. EF Core查询标签TagWith
  8. Java当中Map的认识和基本用法
  9. hive 中某个字段等于0_快速了解hive
  10. 常见的通配符_8、数据库常见操作
  11. JavaScript(DOM编程一)
  12. 初始化请求例子_当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?
  13. 《疯狂Java讲义》(十八)---- JAR文件
  14. web工程引用其他java工程_并读取spring配置文件_SpringBoot项目实战(8):四种读取properties文件的方式...
  15. ddos源码 ntp_了解NTP DDOS攻击原理
  16. Forge 养号手机在线源安装方式;
  17. 实现自适应布局Element
  18. js循环/迭代/遍历有多少方法
  19. Altium Designer生成Gerber文件的设置(嘉立创建议 )
  20. 瑞数FSSBBIl1UgzbN7N443T分析

热门文章

  1. 手动删除oem 13c
  2. 泡芙噶的计算机网络(2)-紧张刺激的Wireshark实验
  3. Mac下的plist纹理图切图工具(命令行)
  4. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
  5. 电影评分数据集的分析
  6. 邓宁—克鲁格心理效应(达克效应)【转】
  7. 第一章:pycharm、anaconda、opencv、pytorch、tensorflow、paddlex等环境配置大全总结【图像处理py版本】
  8. AI智能语音机器人为什么会这么火爆
  9. 魔兽美服服务器维护,心得:美服12小时纯任务练级获服务器第一90级
  10. 刘慈欣 计算机工程师,刘慈欣为什么这么厉害 科幻作家刘慈欣作品有哪些