[转]数据科学中常见的6种概率分布(python实现)

img

转载地址:jpld - 数据科学中的常见的6种概率分布(Python实现) https://www.cnblogs.com/jpld/p/12523815.html

介绍

拥有良好的统计背景对于数据科学家的日常工作可能会大有裨益。每次我们开始探索新的数据集时,我们首先需要进行探索性数据分析(EDA),以了解某些特征的概率分布是什么。如果我们能够了解数据分布中是否存在特定模式,则可以量身定制最适合我们的机器学习模型。这样,我们将能够在更短的时间内获得更好的结果(减少优化步骤)。实际上,某些机器学习模型被设计为在某些分布假设下效果最佳。因此,了解我们正在使用哪个概率分布可以帮助我们确定最适合使用哪些模型。

不同类型的数据

每次我们使用数据集时,我们的数据集都会代表总体的样本。然后使用这个样本,我们可以尝试了解其概率分布,以便我们可以使用它对总体进行预测。

假设我们要根据一组数据来预测房屋的价格,我们可以找到一个包含旧金山所有房价的数据集(我们的样本),进行一些统计分析之后,我们就可以对美国其他任何城市的房价做出相当准确的预测(我们的总体)。

数据集由两种主要类型的数据组成:数值(例如整数,浮点数)和标签(例如名字,电脑品牌)。

数值数据还可以分为其他两类:离散和连续。离散数据只能采用某些值(例如,学校中的学生人数),而连续数据可以采用任何实际或分数值(例如,身高和体重的概念)。

从离散随机变量中,可以计算出概率质量函数,而从连续随机变量中,可以得出概率密度函数。

概率质量函数给出了变量可以等于某个值的概率,概率密度函数的值本身并不是概率,需要在给定范围内进行积分。

自然界中存在许多不同的概率分布,在本文中,我将向大家介绍数据科学中最常用的概率分布。

img

在本文中,我将提供有关如何创建每个不同概率分布的代码。首先,让我们导入所有必要的库:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
import seaborn as sns

伯努利分布

伯努利分布是最容易理解的分布之一,可用作导出更复杂分布的起点。这种分布只有两个可能的结果,一个简单的例子就是抛掷偏斜/无偏硬币。在此示例中,可以认为结果可能是正面的概率等于p,而对于反面则是(1-p)(包含所有可能结果的互斥事件的概率总和为1)。

probs = np.array([0.75, 0.25])
face = [0, 1]
plt.bar(face, probs)
plt.title('Loaded coin Bernoulli Distribution', fontsize=12)
plt.ylabel('Probability', fontsize=12)
plt.xlabel('Loaded coin Outcome', fontsize=12)
axes = plt.gca()
axes.set_ylim([0,1])
img

均匀分布

均匀分布可以很容易地从伯努利分布中得出。在这种情况下,结果的数量可能不受限制,并且所有事件的发生概率均相同。例如掷骰子,存在多个可能的事件,每个事件都有相同的发生概率。

probs = np.full((6), 1/6)
face = [1,2,3,4,5,6]
plt.bar(face, probs)
plt.ylabel('Probability', fontsize=12)
plt.xlabel('Dice Roll Outcome', fontsize=12)
plt.title('Fair Dice Uniform Distribution', fontsize=12)
axes = plt.gca()
axes.set_ylim([0,1])
img

二项分布

二项分布被认为是遵循伯努利分布的事件结果的总和。因此,二项分布用于二元结果事件,并且所有后续试验中成功和失败的概率均相同。此分布采用两个参数作为输入:事件发生的次数和试验成功与否的概率。二项式分布最简单的示例就是将有偏/无偏硬币抛掷一定次数。

大家可以观察一下不同概率情况下二项分布的图形:

# pmf(random_variable, number_of_trials, probability)
for prob in range(3, 10, 3):
    x = np.arange(0, 25)
    binom = stats.binom.pmf(x, 20, 0.1*prob)
    plt.plot(x, binom, '-o', label="p = {:f}".format(0.1*prob))
    plt.xlabel('Random Variable', fontsize=12)
    plt.ylabel('Probability', fontsize=12)
    plt.title("Binomial Distribution varying p")
    plt.legend()
img

二项式分布的主要特征是:

  • 给定多个试验,每个试验彼此独立(一项试验的结果不会影响另一项试验)。
  • 每个试验只能得出两个可能的结果(例如,获胜或失败),其概率分别为p和(1- p)。
  • 如果获得成功概率(p)和试验次数(n),则可以使用以下公式计算这n次试验中的成功概率(x)。

P(X = x) = \frac{n!}{x!(n-x)!}p^x(1-p)^{(n-x)}

正态(高斯)分布

正态(高斯)分布是数据科学中最常用的分布之一。

我们日常生活中发生的许多常见现象都遵循正态分布,例如:经济中的收入分布,学生的平均报告数量,平均身高等。此外,中心极限定理说明,在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布。

n = np.arange(-50, 50)
mean = 0
normal = stats.norm.pdf(n, mean, 10)
plt.plot(n, normal)
plt.xlabel('Distribution', fontsize=12)
plt.ylabel('Probability', fontsize=12)
plt.title("Normal Distribution")
img

可以看出正态分布的特征:

  • 曲线在中心对称。 因此,均值,众数和中位数都相等,从而使所有值围绕均值对称分布。
  • 分布曲线下的面积等于1(所有概率之和必须等于1)

可以使用以下公式得出正态分布

y = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\mu^2}} \\ \mu = Menu \\ \sigma = Standard Deviation \\ \pi \approx 3.14159... \\ e \approx 2.71828... \\

使用正态分布时,均值和标准差起着非常重要的作用。如果我们知道它们的值,通过概率分布即可轻松找出预测精确值的概率。根据正态分布的特性,

  • 68%的数据位于均值的一个标准差范围内,
  • 95%的数据位于均值的两个标准差范围内,
  • 99.7%的数据位于均值的三个标准差范围内。
img

许多机器学习模型被设计为遵循正态分布有最佳效果。以下是一些示例:

  • 高斯朴素贝叶斯分类器
  • 线性判别分析
  • 二次判别分析
  • 基于最小二乘的回归模型

在某些情况下可以通过对数和平方根等变换将非正态数据转换为正态形式。

泊松分布

泊松分布通常用于查找事件可能发生或不发生的频率,还可用于预测事件在给定时间段内可能发生多少次。

例如,保险公司经常使用泊松分布来进行风险分析(预测在预定时间段内发生的车祸事故数),以决定汽车保险的定价。

当使用泊松分布时,我们可以确信发生不同事件之间的平均时间,但是事件发生的确切时刻在时间上是随机间隔的。

泊松分布可以使用以下公式建模,其中\lambda表示单位时间(或单位面积)内随机事件的平均发生率。

P(X) = \frac{\lambda^xe^{-\lambda}}{X!}

泊松分布的主要特征是:

  • 事件彼此独立
  • 一个事件可以发生任何次数(在定义的时间段内)
  • 两个事件不能同时发生
  • 事件发生之间的平均发生率是恒定的。

下图显示了改变λ的值是如何影响泊松分布的:

for lambd in range(2, 8, 2):
    n = np.arange(0, 10)
    poisson = stats.poisson.pmf(n, lambd)
    plt.plot(n, poisson, '-o', label="λ = {:f}".format(lambd))
    plt.xlabel('Number of Events', fontsize=12)
    plt.ylabel('Probability', fontsize=12)
    plt.title("Poisson Distribution varying λ")
    plt.legend()
img

指数分布

指数分布用于对不同事件之间的时间进行建模。

举例来说,假设我们在一家餐厅工作,并且希望预测不同顾客来就餐的时间间隔。针对此类问题使用指数分布一个理想的起点。指数分布的另一个常见应用是生存分析(例如设备/机器的预期寿命)。

指数分布由参数\lambda调节,\lambda值越大,曲线的斜率变化越快。

for lambd in range(1,10, 3):
    x = np.arange(0, 15, 0.1)
    y = 0.1*lambd*np.exp(-0.1*lambd*x)
    plt.plot(x,y, label="λ = {:f}".format(0.1*lambd))
    plt.xlabel('Random Variable', fontsize=12)
    plt.ylabel('Probability', fontsize=12)
    plt.title("Exponential Distribution varying λ")
    plt.legend()
img

指数分布使用以下公式建模

f(x; \lambda) = \left\{ \begin{aligned} \lambda e^{-\lambda x} & & x \ge 0, \\ 0 & & x < 0. & \end{aligned} \right.

参考书目

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354