作者 | Farhad Malik

译者 | Monanfei

责编 | 夕颜

出品 | AI科技大本营(ID: rgznai100)

为什么正态分布如此特殊?为什么大量数据科学和机器学习的文章都围绕正态分布进行讨论?我决定写一篇文章,用一种简单易懂的方式来介绍正态分布。

在机器学习的世界中,以概率分布为核心的研究大都聚焦于正态分布。本文将阐述正态分布的概率,并解释它的应用为何如此的广泛,尤其是在数据科学和机器学习领域,它几乎无处不在。

我将会从基础概念出发,解释有关正态分布的一切,并揭示它为何如此重要。

文章结构

本文的主要内容如下:

  1. 概率分布是什么

  2. 正态分布意味着什么

  3. 正态分布的变量有哪些

  4. 如何使用 Python 来检验数据的分布

  5. 如何使用 Python 参数化生产一个正态分布

  6. 正态分布的问题

简短的背景介绍

  1. 首先,正态分布又名高斯分布

  2. 它以数学天才 Carl Friedrich Gauss 命名

正态分布又名高斯分布

  1. 越简单的模型越是常用,因为它们能够被很好的解释和理解。正态分布非常简单,这就是它是如此的常用的原因。

因此,理解正态分布非常有必要。

什么是概率分布?

首先介绍一下相关概念。

考虑一个预测模型,该模型可以是我们的数据科学研究中的一个组件。

  • 如果我们想精确预测一个变量的值,那么我们首先要做的就是理解该变量的潜在特性。

  • 首先我们要知道该变量的可能取值,还要知道这些值是连续的还是离散的。简单来讲,如果我们要预测一个骰子的取值,那么第一步就是明白它的取值是1 到 6(离散)。

  • 第二步就是确定每个可能取值(事件)发生的概率。如果某个取值永远都不会出现,那么该值的概率就是 0 。

事件的概率越大,该事件越容易出现。

  • 在实际操作中,我们可以大量重复进行某个实验,并记录该实验对应的输出变量的结果。

  • 我们可以将这些取值分为不同的集合类,在每一类中,我们记录属于该类结果的次数。例如,我们可以投10000次骰子,每次都有6种可能的取值,我们可以将类别数设为6,然后我们就可以开始对每一类出现的次数进行计数了。

  • 我们可以画出上述结果的曲线,该曲线就是概率分布曲线。目标变量每个取值的可能性就由其概率分布决定。

  • 一旦我们知道了变量的概率分布,我们就可以开始估计事件出现的概率了,我们甚至可以使用一些概率公式。至此,我们就可更好的理解变量的特性了。概率分布取决于样本的一些特征,例如平均值,标准偏差,偏度和峰度。

  • 如果将所有概率值求和,那么求和结果将会是100%

世界上存在着很多不同的概率分布,而最广泛使用的就是正态分布了。

初遇正态分布

我们可以画出正态分布的概率分布曲线,可以看到该曲线是一个钟型的曲线。如果变量的均值,模和中值相等,那么该变量就呈现正态分布。

如下图所示,为正态分布的概率分布曲线:

理解和估计变量的概率分布非常重要。

下面列出的变量的分布都比较接近正态分布:

  1. 人群的身高

  2. 成年人的血压

  3. 传播中的粒子的位置

  4. 测量误差

  5. 回归中的残差

  6. 人群的鞋码

  7. 一天中雇员回家的总耗时

  8. 教育指标

此外,生活中有大量的变量都是具有 x % 置信度的正态变量,其中,x<100。

什么是正态分布?

正态分布只依赖于数据集的两个特征:样本的均值和方差。

均值——样本所有取值的平均

方差——该指标衡量了样本总体偏离均值的程度

正态分布的这种统计特性使得问题变得异常简单,任何具有正态分布的变量,都可以进行高精度分预测。

值得注意的是,大自然中发现的变量,大多近似服从正态分布。

正态分布很容易解释,这是因为:

  1. 正态分布的均值,模和中位数是相等的。

  2. 我们只需要用均值和标准差就能解释整个分布。

正态分布是我们熟悉的正常行为

为何如此多的变量都大致服从正态分布?

这个现象可以由如下定理理解释:当在大量随机变量上重复很多次实验时,它们的分布总和将非常接近正态分布。

由于人的身高是一个随机变量,并且基于其他随机变量,例如一个人消耗的营养量,他们所处的环境,他们的遗传等等,这些变量的分布总和最终是非常接近正态的。

这就是中心极限定理

本文的核心:

我们从上文的分析得出,正态分布是许多随机分布的总和。 如果我们绘制正态分布密度函数,那么它的曲线将具有以下特征:

如上图所示,该钟形曲线有均值为 100,标准差为1:

  • 均值是曲线的中心。 这是曲线的最高点,因为大多数点都是均值。

  • 曲线两侧的点数相等。 曲线的中心具有最多的点数。

  • 曲线下的总面积是变量所有取值的总概率。

  • 因此总曲线面积为 100%

更进一步,如上图所示:

  • 约 68.2% 的点在 -1 到 1 个标准偏差范围内。

  • 约 95.5% 的点在 -2 到 2 个标准偏差范围内。

  • 约 99.7% 的点在 -3 至 3 个标准偏差范围内。

这使我们可以轻松估计变量的变化性,并给出相应置信水平,它的可能取值是多少。例如,在上面的灰色钟形曲线中,变量值在 99-101 之间的可能性为 68.2%。

正态概率分布函数

概率密度函数的形式如下:

概率密度函数基本上可以看作是连续随机变量取值的概率。

正态分布是钟形曲线,其中mean = mode = median。

  • 如果使用概率密度函数绘制变量的概率分布曲线,则给定范围的曲线下的面积,表示目标变量在该范围内取值的概率。

  • 概率分布曲线基于概率分布函数,而概率分布函数本身是根据诸如平均值或标准差等多个参数计算的。

  • 我们可以使用概率分布函数来查找随机变量取值范围内的值的相对概率。 例如,我们可以记录股票的每日收益,将它们分组到适当的集合类中,然后计算股票在未来获得20-40%收益的概率。

标准差越大,样品中的变化性越大。

如何使用 Python 探索变量的概率分布

最简单的方法是加载 data frame 中的所有特征,然后运行以下脚本(使用pandas 库):

DataFrame.hist(bins=10)#Make a histogram of the DataFrame.

该函数向我们展示了所有变量的概率分布。

变量服从正态分布意味着什么?

如果我们将大量具有不同分布的随机变量加起来,所得到的新变量将最终具有正态分布。这就是前文所述的中心极限定理。

服从正态分布的变量总是服从正态分布。 例如,假设 A 和 B 是两个具有正态分布的变量,那么:

• A x B 是正态分布

• A + B 是正态分布

因此,使用正态分布,预测变量并在一定范围内找到它的概率会变得非常简单。

样本不服从正态分布怎么办?

我们可以将变量的分布转换为正态分布。

我们有多种方法将非正态分布转化为正态分布:

1.线性变换

一旦我们收集到变量的样本数据,我们就可以对样本进行线性变化,并计算Z得分:

  1. 计算平均值

  2. 计算标准偏差

  3. 对于每个 x,使用以下方法计算 Z:

2.使用 Boxcox 变换

我们可以使用 SciPy 包将数据转换为正态分布:

scipy.stats.boxcox(x, lmbda=None, alpha=None)

3.使用 Yeo-Johnson 变换

另外,我们可以使用 yeo-johnson 变换。 Python 的 sci-kit learn 库提供了相应的功能:

sklearn.preprocessing.PowerTransformer(method=’yeojohnson’,standardize=True, copy=True)

正态分布的问题

由于正态分布简单且易于理解,因此它也在预测研究中被过度使用。 假设变量服从正态分布会有一些显而易见的缺陷。 例如,我们不能假设股票价格服从正态分布,因为价格不能为负。 因此,我们可以假设股票价格服从对数正态分布,以确保它永远不会低于零。

我们知道股票收益可能是负数,因此收益可以假设服从正态分布。

假设变量服从正态分布而不进行任何分析是愚蠢的。

变量可以服从Poisson,Student-t 或 Binomial 分布,盲目地假设变量服从正态分布可能导致不准确的结果。

总结

本文阐述了正态分布的概念和性质,以及它如此重要的原因。

希望能帮助到你。

原文链接:http://bit.ly/2NyetFz

(*本文为 AI科技大本营翻译文章,转载请联系 1092722531)

精彩推荐

“只讲技术,拒绝空谈”!2019 AI开发者大会将于9月6日-7日在北京举行!这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长!

目前,大会盲订票限量发售中~扫码购票,领先一步!

推荐阅读:

  • 干货 | Python后台开发的高并发场景优化解决方案

  • 200行代码实现一个滑动验证码

  • 爬虫到底违法吗?这位爬虫工程师给出了答案

  • 收藏!本、硕、博、程序员必备神器

  • 阿里巴巴杨群:高并发场景下Python的性能挑战

  • 24式,加速你的Python

  • Python从入门到精通,这篇文章为你列出了25个关键技术点(附代码)

  • 500行Python代码打造刷脸考勤系统

你点的每个“在看”,我都认真当成了喜欢

python绘制正态分布函数_学好正态分布有多重要?相关推荐

  1. python绘制反比例函数_描点法画反比例函数图像的动态演示——数学软件GeoGebra制作教程...

    Gif动态图又又又上传不成功了,建议跳转链接查看全文:描点法画反比例函数图像的动态演示--数学软件GeoGebra制作教程​www.toutiao.com 关于描点法画函数图像,前面已有三篇,包括以一 ...

  2. python绘制反比例函数_怎样在几何画板中画可变的反比例函数

    原标题:怎样在几何画板中画可变的反比例函数 反比例函数是中学时代必学的一种函数,其图像是是双曲线,是用平滑的曲线把一些特殊的点连接起来的,掌握反比例函数的图像是中学数学的重点和难点.作为好用的绘图工具 ...

  3. 使用 Python 绘制 Log 函数图

    使用 Python 绘制 Log 函数图 在数学和科学计算中,Log 函数是一个基本的函数之一.在数据分析.信号处理.机器学习等领域,Log 函数也有着广泛的应用.因此,在 Python 中绘制 Lo ...

  4. 使用python绘制任意函数图像

    使用python绘制任意函数图像 ##原创文章不易,望点赞转发收藏三连 效果展示 y = (sinx)/x y = x4+x3+x^2+1 y=-x^2 文末还会展示一些实例图片 引入需要的库 我们使 ...

  5. python 累积正态分布函数_为什么机器学习都围绕正态分布进行讨论?

    作者 | Farhad Malik 译者 | Monanfei 责编 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 为什么正态分布如此特殊?为什么大量数据科学和机器学习的文章都围绕 ...

  6. python正态分布函数_用python求标准正态分布的上α分位点

    累计分布函数bai值等于1-α的du点,即就是逆累zhi计分布函数icdf(1-α)的值 如果dao使用Python计算的话,4102代码如下:1653 from scipy.stats import ...

  7. python随机生成正态分布函数_使用python实现正态分布函数

    用来计算连续变量的发生率,说的很抽象,简单说就是单独拿出来没什么太大用,但并不是说这个没什么用,相反这个太重要了,这玩意能让你看清世界的真相 先看个图,像这样的线性就是正太分布 这是一个标准的正态分布 ...

  8. python列表平均值函数_如何计算列表的平均值-统计信息和Python的均值函数详细解释

    python列表平均值函数 Mathematics and programming go hand in hand. If you are a programmer, at some point yo ...

  9. python中circle函数_从Python3.6 Zelle Graphics中的另一个函数调用circle函数

    我已经看了所有关于圆.python和调用函数的问题,没有任何帮助.我也不能用乌龟,所以请不要这样建议.谢谢您!在 我试图创建一个程序,绘制不同颜色和半径的同心圆(以生成类似目标的图像),但drawCi ...

最新文章

  1. 对Android源码分析总结(Z)
  2. 工业以太网交换机的三种转发方式
  3. 空间皮肤代码_不废话,看我20行代码搞定色块提取与定位…….
  4. Java switch-case语句用法
  5. 史上最全软考软件设计师资料
  6. Redis开发与运维之第八章理解内存(五)
  7. 工信部ICP备案管理系统滑动验证码破解
  8. [SAS Hard Coding] 车型对应车商代码
  9. 机器学习-朴素贝叶斯(基础讲解+代码实现+图像展示)
  10. 安装配置DOSBox
  11. 电脑重装系统蓝屏详细解决方法分享
  12. SpringBoot项目的两种打包方式分析
  13. 【PHP】php 递归、效率和分析
  14. Oracle中索引的创建和使用
  15. 了解Python 一
  16. 平面设计色彩搭配,让设计大放异彩
  17. Android新技术——探秘微信小程序
  18. 页面title加icon
  19. 电脑故障维修判断指导
  20. 数字孪生城市概念分析及建设方案详解

热门文章

  1. 阳光学院计算机科学与技术需要英语四级,给各位想报阳光的朋友一点建议!来自学长的亲身经历!...
  2. java 多线程同步_浅谈Java多线程(状态、同步等)
  3. Java黑皮书课后题第6章:*6.15(金融应用:打印税表)程序清单3-5给出了计算税款的程序。使用下面的方法体编写一个计算税款的方法。使用这个方法编写程序,打印可征税人从50000到60000间隔
  4. 基于php的地铁查询系统,省时方便的小程序:查地铁
  5. S2SH框架入门之使用struts2
  6. 【C++ 第七章 个人银行账户管理程序案例】
  7. oracle数据库元数据SQL查询
  8. VS2010 Visual Assist X 的配合
  9. Struts2运行机制(MVC)的分析:
  10. Java通过几种经典的算法来实现数组排序