数据科学中的常见的6种概率漫衍(Python实现)

作者:Pier Paolo Ippolito@南安普敦大学

编译:机械学习算法与Python实战(微信民众号:tjxj666)

原文:https://towardsdatascience.com/probability-distributions-in-data-science-cce6e64873a7

数据科学中的常见的6种概率漫衍(Python实现)

先容

拥有优越的统计靠山对于数据科学家的一样平常事情可能会大有裨益。每次我们最先探索新的数据集时,我们首先需要举行探索性数据剖析(EDA),以领会某些特征的概率漫衍是什么。若是我们能够领会数据漫衍中是否存在特定模式,则可以量身定制最适合我们的机械学习模子。这样,我们将能够在更短的时间内获得更好的效果(削减优化步骤)。现实上,某些机械学习模子被设计为在某些漫衍假设下效果最佳。因此,领会我们正在使用哪个概率漫衍可以辅助我们确定最适合使用哪些模子。

差别类型的数据

每次我们使用数据集时,我们的数据集都市代表总体的样本。然后使用这个样本,我们可以实验领会其概率漫衍,以便我们可以使用它对总体举行展望。

假设我们要凭据一组数据来展望衡宇的价钱,我们可以找到一个包罗旧金山所有房价的数据集(我们的样本),举行一些统计剖析之后,我们就可以对美国其他任何都会的房价做出相当准确的展望(我们的总体)。

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

数值数据还可以分为其他两类:离散和继续。离散数据只能接纳某些值(例如,学校中的学生人数),而延续数据可以接纳任何现实或分数值(例如,身高和体重的观点)。

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

概率质量函数给出了变量可以即是某个值的概率,概率密度函数的值自己并不是概率,需要在给定范围内举行积分。

自然界中存在许多差别的概率漫衍,在本文中,我将向人人先容数据科学中最常用的概率漫衍。

数据科学中的常见的6种概率漫衍(Python实现)
在本文中,我将提供有关若何建立每个差别概率漫衍的代码。首先,让我们导入所有需要的库:

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])

数据科学中的常见的6种概率漫衍(Python实现)

均匀漫衍

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

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])

数据科学中的常见的6种概率漫衍(Python实现)

二项漫衍

二项漫衍被以为是遵照伯努利漫衍的事宜效果的总和。因此,二项漫衍用于二元效果事宜,而且所有后续试验中乐成和失败的概率均相同。此漫衍接纳两个参数作为输入:事宜发生的次数和试验乐成与否的概率。二项式漫衍最简朴的示例就是将有偏/无偏硬币投掷一定次数。

人人可以考察一下差别概率情况下二项漫衍的图形:

# 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()

数据科学中的常见的6种概率漫衍(Python实现)
二项式漫衍的主要特征是:

  • 给定多个试验,每个试验相互自力(一项试验的效果不会影响另一项试验)。

  • 每个试验只能得出两个可能的效果(例如,获胜或失败),其概率分别为p和(1- p)。

若是获得乐成概率(p)和试验次数(n),则可以使用以下公式盘算这n次试验中的乐成概率(x)。

数据科学中的常见的6种概率漫衍(Python实现)

正态(高斯)漫衍

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

我们一样平常生涯中发生的许多常见征象都遵照正态漫衍,例如:经济中的收入漫衍,学生的平均讲述数目,平均身高等。此外,中央极限定理说明,在适当的条件下,大量相互自力随机变量的均值经适当标准化后依漫衍收敛于正态漫衍。

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")

数据科学中的常见的6种概率漫衍(Python实现)

可以看出正态漫衍的特征:

手写redux方法以及数组reduce方法

  • 曲线在中央对称。 因此,均值,众数和中位数都相等,从而使所有值围绕均值对称漫衍。

  • 漫衍曲线下的面积即是1(所有概率之和必须即是1)

可以使用以下公式得出正态漫衍

数据科学中的常见的6种概率漫衍(Python实现)

使用正态漫衍时,均值和标准差起着非常重要的作用。若是我们知道它们的值,通过概率漫衍即可轻松找出展望正确值的概率。凭据正态漫衍的特征,68%的数据位于均值的一个标准差范围内,95%的数据位于均值的两个标准差范围内,99.7%的数据位于均值的三个标准差范围内。

数据科学中的常见的6种概率漫衍(Python实现)

许多机械学习模子被设计为遵照正态漫衍有最佳效果。以下是一些示例:

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

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

泊松漫衍

泊松漫衍通常用于查找事宜可能发生或不发生的频率,还可用于展望事宜在给定时间段内可能发生多少次。

例如,保险公司经常使用泊松漫衍来举行风险剖析(展望在预定时间段内发生的车祸事故数),以决议汽车保险的订价。

当使用泊松漫衍时,我们可以确信发生差别事宜之间的平均时间,然则事宜发生简直切时刻在时间上是随机距离的。

泊松漫衍可以使用以下公式建模,其中λ示意单元时间(或单元面积)内随机事宜的平均发生率。

数据科学中的常见的6种概率漫衍(Python实现)

泊松漫衍的主要特征是:

  • 事宜相互自力
  • 一个事宜可以发生任何次数(在界说的时间段内)
  • 两个事宜不能同时发生
  • 事宜发生之间的平均发生率是恒定的。

下图显示了改变λ的值是若何影响泊松漫衍的:

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()

数据科学中的常见的6种概率漫衍(Python实现)

指数漫衍

指数漫衍用于对差别事宜之间的时间举行建模。

举例来说,假设我们在一家餐厅事情,而且希望展望差别主顾来就餐的时间距离。针对此类问题使用指数漫衍一个理想的起点。指数漫衍的另一个常见应用是生计剖析(例如装备/机械的预期寿命)。

指数漫衍由参数λ调治。λ值越大,曲线的斜率转变越快。

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()

数据科学中的常见的6种概率漫衍(Python实现)

指数漫衍使用以下公式建模

数据科学中的常见的6种概率漫衍(Python实现)

参考书目

[1]https://medium.com/diogo-menezes-borges/introduction-to-statistics-for-data-science-7bf596237ac6

[2]https://bolt.mph.ufl.edu/6050-6052/unit-3b/binomial-random-variables/

[3]https://www.thoughtco.com/normal-distribution-bell-curve-formula-3126278

[4]https://towardsdatascience.com/understanding-the-68-95-99-7-rule-for-a-normal-distribution-b7b7cbf760c2

[5]http://makemeanalyst.com/wp-content/uploads/2017/05/Poisson-Distribution-Formula.png

[6]https://www.andlearning.org/exponential-formula/

数据科学中的常见的6种概率漫衍(Python实现)

原创文章,作者:dddof新闻网,如若转载,请注明出处:https://www.dddof.com/archives/1817.html