一、基础概念
先来看下数据的类型,常见的数据分类方式有三种:第一种是按照数据的结构属性分类,根据数据的存储形式分为结构化数据和非结构化数据,例如数据库的存储对象基本上都是结构化数据,结构化数据是进行数据分析的基本类型;对于非结构化数据,其存在形式多样化,有视频、音频、图片、影像、文档和文本等形式,对于非结构化数据只有将其转化为结构化数据才能进行数分析。第二种按照数据的连续性特征分为离散型数据和连续性数据;第三种根据数据的测量尺度分为:定类数据、定序数据、定距数据和定比数据。
随机变量
每次试验的结果可以用一个变量的数值来表示,这个变量的取值随偶然因素变化,但又遵从一定的概率分布规律。
离散变量
离散型随机变量是在一定区间内变量取值为有限个或可数个。
连续变量
连续性随机变量就是在一定区间内变量取值有无限个,或数值无法一一列举出来。
期望值
期望值是随机试验在同样的机会下重复多次的结果计算出的等同于“期望”的平均值,期望值也成为数学期望或均值,它是指在一个离散性随机变量实验中每次可能结果的概率乘以其结果的总和。
古典概率
又称为事前概率,是指当随机事件中各种可能发生的结果及其出现的次数都可以由演绎或外推法得知,而无需经过任何统计试验即可计算各种可能发生结果的概率。
条件概率
是指事件A在时间B发生的条件下发生的概率。
二、离散变量概率分布
二项分布
在概率论或统计学中,二项分布是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。这样的单次成功/失败的试验又称为伯努利试验。当n=1时,二项分布就是伯努利分布。
若进行了n次伯努利试验,成功了x次,失败的次数为n-x,设成功的概率为p,失败的概率为q=1-p,发生这种情况的概率用以下公式表示:(二项分布 x~B(n,p))
二项分布的均值和方差分别为:
泊松分布
泊松分布的概率函数为:
, k=0,1...
泊松分布的参数
是单位时间(或单位面积)内随机事件的平均发生次数,泊松分布适合于描述单位时间内随机事件发生的次数。
泊松分布的期望和方差均为
。
泊松分布是由二项分布推导而来的,当二项分布的n很大而p很小时,泊松分布可作为二项分布的近似,其中
为np, 通常当n>=20,p<=0.05时,就可以用泊松公式近似的计算。
三、连续变量概率分布
均匀分布
均匀概率分布是古典概率分布的连续形式,是指随机事件的可能结果是连续型数据变量,所有的连续型数据结果所对应的概率相等。也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。均匀分布由两个参数a,b定义,他们是数轴上的最小值和最大值,U(a,b)。
其概率密度函数f(x):
当a
当xb时,
均匀分布的期望和方差为:
,
正态分布
正态分布又名高斯分布,若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。
其概率密度函数为:
卡方分布
若n个相互独立的随机变量ξ₁,ξ₂,...,ξn ,均服从标准正态分布(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布(
分布)。
或者
,其中v是自由度,v=n-k, k是限制条件数。
beta分布
在概率论中,贝塔分布也称B分布,是指一组定义在(0,1)区间的连续概率分布,有两个参数
。贝塔分布是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数,在机器学习和数理统计学中有重要应用。
B分布的概率密度函数是:
随机变量X服从参数为
的B分布通常写作:
。
四、用Python代码实现常见概率分布
二项分布(伯努利分布)
from scipy import stats as st
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
#防止乱码
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 二项分布
n = 100
p = 0.25
k = np.arange(0,n)
binomial = st.binom.pmf(k,n,p)
plt.plot(k,binomial,'o-')
plt.title('伯努利分布:n=%i,p=%.2f'%(n,p),fontsize=15)
plt.xlabel('成功次数')
plt.ylabel('成功概率',fontsize=15)
plt.grid(True)#显示轴网格线
plt.show()
泊松分布
x = np.random.poisson(lam=6, size=1000) # lam为λ size为k
pillar = 20
a = plt.hist(x, bins=pillar, density=True, range=[0, pillar], color='g', alpha=0.5)
plt.title('泊松分布',fontsize=15)
plt.xlabel('柱子个数')
plt.ylabel('概率',fontsize=15)
plt.plot(a[1][0:pillar], a[0], 'r')
plt.grid()
plt.show()
均匀分布
#均匀分布
#PDF 概率分布函数
plt.plot(np.linspace(-3,3,100),stats.uniform.pdf(np.linspace(-3,3,100)))
plt.fill_between(np.linspace(-3,3,100),stats.uniform.pdf(np.linspace(-3,3,100)),alpha=0.15)
plt.text(x=-1.5,y=0.7,s="pdf(uniform)",rotation=65,alpha=0.75,weight="bold",color="g")
正态分布
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
#概率密度函数
plt.plot(np.linspace(-3,3,100),stats.norm.pdf(np.linspace(-3,3,100))) #从(-3,3)中随机选取100个数,绘制该事件的概率密度函数
plt.fill_between(np.linspace(-3,3,100),stats.norm.pdf(np.linspace(-3,3,100)),alpha=.15)#对曲线内部进行填充
#注解
plt.text(x=-1,y=0.3,s="pdf(normed)",rotation=.65,weight="bold",color='g')
卡方分布
x = np.linspace(0,30,100)
y = st.chi2.pdf(np.linspace(0,30,100),df=3)
#PDF 概率密度函数
plt.plot(x,y)#绘制0到30的卡方分布曲线,给定自由度为3
plt.fill_between(x,y,alpha=0.15) #填充曲线
plt.title(u'卡方分布:自由度为3')
plt.show()