作者:PierPaoloIppolito@SouthamptonUniversity编译:机器学习算法与Python实践(微信公众号:tjxj666)原文:https://towardsdatascience.co...简介拥有良好的统计学背景对数据科学家的日常工作大有裨益。每次我们开始探索一个新的数据集时,我们首先需要进行探索性数据分析(EDA),以了解某些特征的概率分布是什么。如果我们能够了解数据分布中是否存在特定模式,我们就可以定制最适合我们的机器学习模型。这样我们将能够在更短的时间内(更少的优化步骤)获得更好的结果。事实上,一些机器学习模型被设计为在某些分布假设下工作得最好。因此,了解我们正在使用的概率分布可以帮助我们确定最适合使用的模型。不同类型的数据每次我们使用数据集时,我们的数据集都代表总体样本。然后使用这个样本,我们可以尝试了解它的概率分布,以便我们可以用它来对人口进行预测。假设我们要根据一组数据预测房屋的价格。我们可以找到包含旧金山所有房价的数据集(我们的样本)。在做了一些统计分析之后,我们可以做出相当准确的预测预测(我们的人口)。数据集由两种主要类型的数据组成:数值(例如整数、浮点数)和标签(例如名称、计算机品牌)。数值数据也可以分为另外两类:离散的和连续的。离散数据只能取一定的值(例如学校的学生人数),而连续数据可以取任意实数或分数值(例如身高和体重的概念)。从离散随机变量可以计算概率质量函数,而从连续随机变量可以导出概率密度函数。概率质量函数给出了变量可以等于某个值的概率,概率密度函数的值本身并不是概率,需要在给定范围内进行积分。自然界存在许多不同的概率分布,在本文中,我将向您介绍数据科学中最常用的概率分布。在本文中,我将提供有关如何创建每个不同概率分布的代码。首先,让我们导入所有必要的库:importpandasaspdimportnumpyasnpiportmatplotlib.pyplotaspltimportscipy.statsasstatsimportseabornassns伯努利分布伯努利分布是最容易理解的分布之一,可以作为起点用于导出更复杂的分布。这种分布只有两种可能的结果,一个简单的例子是抛一枚倾斜/无偏的硬币。在这个例子中,可以认为结果很可能是正面的概率等于p,反面的概率是(1-p)(包含所有可能结果的互斥事件的概率之和为1)。probs=np.array([0.75,0.25])face=[0,1]plt.bar(face,probs)plt.title('加载硬币伯努利分布',fontsize=12)plt.ylabel('概率',fontsize=12)plt.xlabel('LoadedcoinOutcome',fontsize=12)axes=plt.gca()axes.set_ylim([0,1])均匀分布均匀分布可以很容易的从伯努利分布推导出来。在这种情况下,可能结果的数量是无限的,并且所有事件发生的可能性相同。例如,在掷骰子时,有多个可能的事件,每个事件发生的概率相同。probs=np.full((6),1/6)face=[1,2,3,4,5,6]plt.bar(face,probs)plt.ylabel('概率',fontsize=12)plt.xlabel('DiceRollOutcome',fontsize=12)plt.title('FairDiceUniformDistribution',fontsize=12)axes=plt.gca()axes.set_ylim([0,1])二项分布binomialThedistribution被认为是服从伯努利分布的事件结果的总和。因此,二项式分布用于二元结果事件,并且在所有后续试验中成功和失败的概率相同。该分布将两个参数作为输入:事件发生的次数和试验成功或失败的概率。二项分布的最简单示例是一定数量的有偏/无偏硬币抛掷。您可以观察不同概率情况下的二项分布图:#pmf(random_variable,number_of_trials,probability)forprobinrange(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('随机变量',fontsize=12)plt.ylabel('Probability',fontsize=12)plt.title("BinomialDistributionvaryingp")plt.legend()二项分布的主要特征是:给定多个试验,每个试验是彼此独立(一个试验的结果不影响另一个)。每个试验只能有两个可能的结果(例如,获胜或失败),概率为p和(1-p)。如果得到成功概率(p)和试验次数(n),就可以用下面的公式计算出这n次试验中成功的概率(x)。正态(高斯)分布正态(高斯)分布是数据科学中最常用的分布之一。我们日常生活中出现的许多常见现象都服从正态分布,例如:经济中的收入分配、学生的平均报数、平均身高等。此外,中心极限定理指出,在适当的条件下,均值大量相互独立的随机变量的值经过适当的标准化后收敛于正态分布。n=np.arange(-50,50)mean=0normal=stats.norm.pdf(n,mean,10)plt.plot(n,normal)plt.xlabel('分布',fontsize=12)plt.ylabel('Probability',fontsize=12)plt.title("NormalDistribution")可以看到正态分布的特点:曲线在中心对称。因此,均值、众数、中位数都相等,使得所有值都围绕均值对称分布。分布曲线下的面积等于1(所有概率的总和必须等于1)正态分布可以使用以下公式推导出在使用正态分布时,均值和标准差起着非常重要的作用。如果我们知道它们的值,则很容易通过概率分布找到预测准确值的概率。根据正态分布的性质,68%的数据在均值的一个标准差内,95%的数据在均值的两个标准差内,99.7%的数据在均值的三个标准差内。意思是。许多机器学习模型被设计为遵循正态分布才能发挥最佳作用。以下是一些示例:高斯朴素贝叶斯分类器线性判别分析二次判别分析基于最小二乘法的回归模型在某些情况下,非正态数据可以通过对数和平方根等变换转换为正态形式。泊松分布泊松分布通常用于查找事件可能发生或不发生的频率,也可用于预测事件在给定时间段内可能发生多少次。例如,保险公司经常使用泊松分布进行风险分析(预测在预定时间段内将发生的车祸数量)来确定汽车保险的价格。使用泊松分布时,我们可以确定不同事件发生之间的平均时间,但事件发生的确切时刻在时间上是随机分布的。泊松分布可以使用以下公式建模,其中λ表示单位时间(或单位面积)随机事件的平均发生率。泊松分布的主要特点是:事件相互独立一个事件可以发生任意次数(在定义的时间段内)两个事件不能同时发生事件发生之间的平均发生率是常数。下图显示了改变λ的值如何影响泊松分布:对于范围(2,8,2)中的lambd:n=np.arange(0,10)poisson=stats.poisson.pmf(n,lambd)plt.plot(n,poisson,'-o',label="λ={:f}".format(lambd))plt.xlabel('事件数',fontsize=12)plt.ylabel('概率',fontsize=12)plt.title("PoissonDistributionvaryingλ")plt.legend()指数分布指数分布用于模拟不同事件之间的时间。例如,假设我们在一家餐厅工作,想要预测不同顾客前来就餐的时间间隔。对这类问题使用指数分布是一个理想的起点。指数分布的另一个常见应用是生存分析(例如设备/机器的预期寿命)。指数分布由参数λ调节。λ的值越大,曲线的斜率变化越快。对于范围(1,10,3)中的lambd: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('随机变量',fontsize=12)plt.ylabel('概率',fontsize=12)plt.title("指数分布变化λ")plt.legend()指数分布使用以下公式建模参考书目[1]https://medium.com/diogo-mene...[2]https://bolt.mph.ufl.edu/6050。..[3]https://www.thoughtco.com/nor...[4]https://towardsdatascience.co...[5]http://makemeanalyst.com/wp-c...[6]https://www.andlearning.org/e...
