新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
不写出y=f(x)这样的表达式,由隐函数的等式直接绘制图像,以x²+y²+xy=1的图像为例,使用sympy间接调用matplotlib工具的代码和该二次曲线图像如下(注意python里的乘幂符号是**而不是^,还有,python的sympy工具箱的等式不是a==b,而是a-b或者Eq(a,b),这几点和matlab的区别很大)
创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为朝阳企业提供专业的成都网站设计、成都网站制作,朝阳网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
直接在命令提示行的里面运行代码的效果
from sympy import *;
x,y=symbols('x y');
plotting.plot_implicit(x**2+y**2+x*y-1);
如果随机变量X的所有取值都可以逐个列举出来,则称X为离散型随机变量。相应的概率分布有二项分布,泊松分布。
如果随机变量X的所有取值无法逐个列举出来,而是取数轴上某一区间内的任一点,则称X为连续型随机变量。相应的概率分布有正态分布,均匀分布,指数分布,伽马分布,偏态分布,卡方分布,beta分布等。(真多分布,好恐怖~~)
在离散型随机变量X的一切可能值中,各可能值与其对应概率的乘积之和称为该随机变量X的期望值,记作E(X) 。比如有随机变量,取值依次为:2,2,2,4,5。求其平均值:(2+2+2+4+5)/5 = 3。
期望值也就是该随机变量总体的均值。 推导过程如下:
= (2+2+2+4+5)/5
= 1/5 2 3 + 4/5 + 5/5
= 3/5 2 + 1/5 4 + 1/5 5
= 0.6 2 + 0.2 4 + 0.2 5
= 60% 2 + 20% 4 + 20%*5
= 1.2 + 0.8 + 1
= 3
倒数第三步可以解释为值为2的数字出现的概率为60%,4的概率为20%,5的概率为20%。 所以E(X) = 60% 2 + 20% 4 + 20%*5 = μ = 3。
0-1分布(两点分布),它的随机变量的取值为1或0。即离散型随机变量X的概率分布为:P{X=0} = 1-p, P{X=1} = p,即:
则称随机变量X服从参数为p的0-1分布,记作X~B(1,p)。
在生活中有很多例子服从两点分布,比如投资是否中标,新生婴儿是男孩还是女孩,检查产品是否合格等等。
大家非常熟悉的抛硬币试验对应的分布就是二项分布。抛硬币试验要么出现正面,要么就是反面,只包含这两个结果。出现正面的次数是一个随机变量,这种随机变量所服从的概率分布通常称为 二项分布 。
像抛硬币这类试验所具有的共同性质总结如下:(以抛硬币为例)
通常称具有上述特征的n次重复独立试验为n重伯努利试验。简称伯努利试验或伯努利试验概型。特别地,当试验次数为1时,二项分布服从0-1分布(两点分布)。
举个栗子:抛3次均匀的硬币,求结果出现有2个正面的概率 。
已知p = 0.5 (出现正面的概率) ,n = 3 ,k = 2
所以抛3次均匀的硬币,求结果出现有2个正面的概率为3/8。
二项分布的期望值和方差 分别为:
泊松分布是用来描述在一 指定时间范围内或在指定的面积或体积之内某一事件出现的次数的分布 。生活中服从泊松分布的例子比如有每天房产中介接待的客户数,某微博每月出现服务器瘫痪的次数等等。 泊松分布的公式为 :
其中 λ 为给定的时间间隔内事件的平均数,λ = np。e为一个数学常数,一个无限不循环小数,其值约为2.71828。
泊松分布的期望值和方差 分别为:
使用Python绘制泊松分布的概率分布图:
因为连续型随机变量可以取某一区间或整个实数轴上的任意一个值,所以通常用一个函数f(x)来表示连续型随机变量,而f(x)就称为 概率密度函数 。
概率密度函数f(x)具有如下性质 :
需要注意的是,f(x)不是一个概率,即f(x) ≠ P(X = x) 。在连续分布的情况下,随机变量X在a与b之间的概率可以写成:
正态分布(或高斯分布)是连续型随机变量的最重要也是最常见的分布,比如学生的考试成绩就呈现出正态分布的特征,大部分成绩集中在某个范围(比如60-80分),很小一部分往两端倾斜(比如50分以下和90多分以上)。还有人的身高等等。
正态分布的定义 :
如果随机变量X的概率密度为( -∞x+∞):
则称X服从正态分布,记作X~N(μ,σ²)。其中-∞μ+∞,σ0, μ为随机变量X的均值,σ为随机变量X的标准差。 正态分布的分布函数
正态分布的图形特点 :
使用Python绘制正态分布的概率分布图:
正态分布有一个3σ准则,即数值分布在(μ-σ,μ+σ)中的概率为0.6827,分布在(μ-2σ,μ+2σ)中的概率为0.9545,分布在(μ-3σ,μ+3σ)中的概率为0.9973,也就是说大部分数值是分布在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性很小很小,仅占不到0.3%,属于极个别的小概率事件,所以3σ准则可以用来检测异常值。
当μ=0,σ=1时,有
此时的正态分布N(0,1) 称为标准正态分布。因为μ,σ都是确定的取值,所以其对应的概率密度曲线是一条 形态固定 的曲线。
对标准正态分布,通常用φ(x)表示概率密度函数,用Φ(x)表示分布函数:
假设有一次物理考试特别难,满分100分,全班只有大概20个人及格。与此同时语文考试很简单,全班绝大部分都考了90分以上。小明的物理和语文分别考了60分和80分,他回家后告诉家长,这时家长能仅仅从两科科目的分值直接判断出这次小明的语文成绩要比物理好很多吗?如果不能,应该如何判断呢?此时Z-score就派上用场了。 Z-Score的计算定义 :
即 将随机变量X先减去总体样本均值,再除以总体样本标准差就得到标准分数啦。如果X低于平均值,则Z为负数,反之为正数 。通过计算标准分数,可以将任何一个一般的正态分布转化为标准正态分布。
小明家长从老师那得知物理的全班平均成绩为40分,标准差为10,而语文的平均成绩为92分,标准差为4。分别计算两科成绩的标准分数:
物理:标准分数 = (60-40)/10 = 2
语文:标准分数 = (85-95)/4 = -2.5
从计算结果来看,说明这次考试小明的物理成绩在全部同学中算是考得很不错的,而语文考得很差。
指数分布可能容易和前面的泊松分布混淆,泊松分布强调的是某段时间内随机事件发生的次数的概率分布,而指数分布说的是 随机事件发生的时间间隔 的概率分布。比如一班地铁进站的间隔时间。如果随机变量X的概率密度为:
则称X服从指数分布,其中的参数λ0。 对应的分布函数 为:
均匀分布的期望值和方差 分别为:
使用Python绘制指数分布的概率分布图:
均匀分布有两种,分为 离散型均匀分布和连续型均匀分布 。其中离散型均匀分布最常见的例子就是抛掷骰子啦。抛掷骰子出现的点数就是一个离散型随机变量,点数可能有1,2,3,4,5,6。每个数出现的概率都是1/6。
设连续型随机变量X具有概率密度函数:
则称X服从区间(a,b)上的均匀分布。X在等长度的子区间内取值的概率相同。对应的分布函数为:
f(x)和F(x)的图形分别如下图所示:
均匀分布的期望值和方差 分别为:
算出平均值和标准差μ、σ,代入正态分布密度函数表达式:
f(x) = exp{-(x-μ)2/2σ2}/[√(2π)σ]
给定x值,即可算出f值。
import pandasas pd
import numpyas np
import seabornas sns
import matplotlib.pyplotas plt
pd.set_option('display.max_columns', 10000)
pd.set_option('display.max_rows', 10000000000)
pd.set_option('display.width', 100000)
income = pd.read_excel(r'D:\bigData\0629demo\dataSource\income.xlsx')
fill_data = income.fillna(value={'workclass': income.workclass.mode()[0], 'occupation': income.occupation.mode()[0],
'native-country': income['native-country'].mode()[0]}, inplace=True)
# print(income.apply(lambda x: np.sum(x.isnull())))
# print(income)
print(income.describe())
print(income.describe(include=['object']))
# 设置绘图风格
plt.style.use('ggplot')
# 设置多图形组合
fig, axes = plt.subplots(2, 1)
# 绘制不同收入水平下的年龄核密度图
# kind='kde', label='=50K', ax=axes[0], legend=True, linestyle='-'
# kind='kde', label='50K', ax=axes[0], legend=True, linestyle='--'
income['age'][income.income ==' =50K'].plot(kind='kde', ax=axes[0], label='=50K', legend=True, linestyle='-')
income['age'][income.income ==' 50K'].plot(kind='kde', ax=axes[0], label='50K', legend=True, linestyle='--')
# 绘制不同收入水平下的周工作小时数核密度图
# kind='kde', label='= 50K', ax=axes[1], legend=True, linestyle='-'
# kind='kde', label=' 50K', ax=axes[1], legend=True, linestyle='--'
income['hours-per-week'][income.income ==' =50K'].plot(kind='kde', label='= 50K', ax=axes[1], legend=True,
linestyle='-')
income['hours-per-week'][income.income ==' 50K'].plot(kind='kde', label=' 50K', ax=axes[1], legend=True,
linestyle='--')
plt.show()
# 构造不同收入水平下各种族人数的数据
race = pd.DataFrame(income.groupby(by=['race', 'income']).agg(np.size).loc[:, 'age'])
# 重设行索引
race = race.reset_index()
# 变量重命名
race.rename(columns={'age':'counts'}, inplace=True)
print(race)
# 排序
race.sort_values(by=['race', 'counts'], ascending=False, inplace=True)
# 构造不同收入水平下各家庭关系人数的数据
relationship = pd.DataFrame(income.groupby(by=['relationship', 'income']).agg(np.size).loc[:, 'age'])
relationship = relationship.reset_index()
relationship.rename(columns={'age':'counts'}, inplace=True)
relationship.sort_values(by=['relationship', 'counts'], ascending=False, inplace=True)
plt.figure(figsize=(15, 10))
sns.barplot(x='race', y='counts', hue='income', data=race)
plt.show()
plt.figure(figsize=(15, 10))
sns.barplot(x='relationship', y='counts', hue='income', data=relationship)
plt.show()
今天小编就为大家分享一篇python高斯分布概率密度函数的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
要使用Python实现一些离散和连续的概率分布。虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料。在讨论这些概率分布之前,我想简单说说什么是随机变量(randomvariable)。随机变量是对一次试验结果的量化。举个例子,一个表示抛硬币结果的随机变量可以表示成PythonX={1如果正面朝上,2如果反面朝上}12X={1如果正面朝上,2如果反面朝上}随机变量是一个变量,它取值于一组可能的值(离散或连续的),并服从某种随机性。随机变量的每个可能取值的都与一个概率相关联。随机变量的所有可能取值和与之相关联的概率就被称为概率分布(probabilitydistributrion)。我鼓励大家仔细研究一下scipy.stats模块。概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布。离散概率分布也称为概率质量函数(probabilitymassfunction)。离散概率分布的例子有伯努利分布(Bernoullidistribution)、二项分布(binomialdistribution)、泊松分布(Poissondistribution)和几何分布(geometricdistribution)等。连续概率分布也称为概率密度函数(probabilitydensityfunction),它们是具有连续取值(例如一条实线上的值)的函数。正态分布(normaldistribution)、指数分布(exponentialdistribution)和β分布(betadistribution)等都属于连续概率分布。若想了解关于离散和连续随机变量的知识,你可以观看可汗学院关于概率分布的视频。二项分布(BinomialDistribution)服从二项分布的随机变量X表示在n个独立的是/非试验中成功的次数,其中每次试验的成功概率为p。E(X)=np,Var(X)=np(1−p)如果你想知道每个函数的原理,你可以在IPython笔记本中使用helpfile命令。E(X)表示分布的期望或平均值。键入stats.binom?了解二项分布函数binom的信息。二项分布的例子:抛掷10次硬币,恰好两次正面朝上的概率是多少?假设在该试验中正面朝上的概率为0.3,这意味着平均来说,我们可以期待有3次是硬币正面朝上的。我定义掷硬币的所有可能结果为k=np.arange(0,11):你可能观测到0次正面朝上、1次正面朝上,一直到10次正面朝上。我使用stats.binom.pmf计算每次观测的概率质量函数。它返回一个含有11个元素的列表(list),这些元素表示与每个观测相关联的概率值。您可以使用.rvs函数模拟一个二项随机变量,其中参数size指定你要进行模拟的次数。我让Python返回10000个参数为n和p的二项式随机变量。我将输出这些随机变量的平均值和标准差,然后画出所有的随机变量的直方图。泊松分布(PoissonDistribution)一个服从泊松分布的随机变量X,表示在具有比率参数(rateparameter)λ的一段固定时间间隔内,事件发生的次数。参数λ告诉你该事件发生的比率。随机变量X的平均值和方差都是λ。E(X)=λ,Var(X)=λ泊松分布的例子:已知某路口发生事故的比率是每天2次,那么在此处一天内发生4次事故的概率是多少?让我们考虑这个平均每天发生2起事故的例子。泊松分布的实现和二项分布有些类似,在泊松分布中我们需要指定比率参数。泊松分布的输出是一个数列,包含了发生0次、1次、2次,直到10次事故的概率。我用结果生成了以下图片。你可以看到,事故次数的峰值在均值附近。平均来说,你可以预计事件发生的次数为λ。尝试不同的λ和n的值,然后看看分布的形状是怎么变化的。现在我来模拟1000个服从泊松分布的随机变量。正态分布(NormalDistribution)正态分布是一种连续分布,其函数可以在实线上的任何地方取值。正态分布由两个参数描述:分布的平均值μ和方差σ2。E(X)=μ,Var(X)=σ2正态分布的取值可以从负无穷到正无穷。你可以注意到,我用stats.norm.pdf得到正态分布的概率密度函数。β分布(BetaDistribution)β分布是一个取值在[0,1]之间的连续分布,它由两个形态参数α和β的取值所刻画。β分布的形状取决于α和β的值。贝叶斯分析中大量使用了β分布。当你将参数α和β都设置为1时,该分布又被称为均匀分布(uniformdistribution)。尝试不同的α和β取值,看看分布的形状是如何变化的。指数分布(ExponentialDistribution)指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔。比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等。我将参数λ设置为0.5,并将x的取值范围设置为$[0,15]$。接着,我在指数分布下模拟1000个随机变量。scale参数表示λ的倒数。函数np.std中,参数ddof等于标准偏差除以$n-1$的值。/81321/