博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
概率算法_二项分布和泊松分布
阅读量:5101 次
发布时间:2019-06-13

本文共 2405 字,大约阅读时间需要 8 分钟。

本次函数有

1、阶乘

2、计算组合数C(n,x)

3、二项概率分布

4、泊松分布

 

以下是历史函数

#创建一个含有指定数量元素的list

#累加
#统计个数
#累乘
#算数平均数
#算数平均数计算回报
#中位数
#众数
#极差
#几何平均数
#几何平均回报
#方差-样本S^2
#协方差(标准差)-样本S
#变异系数CV
#相关系数-样本r

 

#联合概率

#条件概率
#随机变量期望值
#随机变量方差
#随机变量协方差
#联合协方差
#组合期望回报
#投资组合风险
#贝叶斯

---------------以上是旧的------------------------------------------------------------------------

---------------以下是新的------------------------------------------------------------------------

继续概率,本次是二项分布和泊松分布,这个两个还是挺好玩的,可以作为预测函数用,因为函数比较少,本次就不给例子了,但是会对函数做逐一说明

1、阶乘n!

就是每次-1乘,直到*1,例如5! = 5 * 4 * 3 * 2 * 1 = 120,这个是正常的,但是在写函数的时候这样算法效率会低些,因此直接反过来,1*2*3...这种,那么函数就是

 

def fact_fun(n):  if n == 0:    return 1  n += 1  fact_list = [i for i in range(1,n)]  fact_num = multiply_fun(fact_list)  return fact_num

2、计算组合数C(n,x)

C(n,x) = n! / (x! * (n - x)!)
表示从n个样本中抽取x个样本单元,可能出现结果的组合数,例如从5个物品中抽取3个物品,这三个物品的组合数就是10种

def c_n_x(case_count,real_count):  fact_n = fact_fun(case_count)  fact_x = fact_fun(real_count)  fact_n_x = fact_fun(case_count - real_count)  c_n_x_num = fact_n / (fact_x * fact_n_x)  return c_n_x_num

3、二项概率分布

执行n次伯努利试验,伯努利试验就是执行一次只有两种可能且两种可能互斥的事件,比如丢硬币实验,执行n次,成功k次的概率
P(ξ=K) = C(n,k) * p^k * (1-p)^(n-k)
n=5 k=3 P(ξ>=K) = p(K = 3) + p(K = 4) + p(K = 5)
p表示一个事件的成功概率,失败则是1 - p

def binomial_fun(case_count,real_count,p):  c_n_k_num = c_n_x(case_count,real_count)  pi = (p ** real_count) * ((1 - p) ** (case_count - real_count))  binomial_num = c_n_k_num * pi  return binomial_num

4、泊松分布

给定的一个机会域中,机会域可以是一个范围,也可以是一段时间,在这个机会域中可能发生某个统计事件的概率,举个例子,比有个商店,每小时平均有10位顾客光顾,那么一个小时有13位顾客光顾的概率,就是泊松分布,13位顾客光顾就是统计事件
P(X) = (e^-λ*λ^X)/X! = (2.7182818^-10*10^13)/13! = 0.0729
这里的λ是指平均值,可以使用算数平均数得到,e是自然常数~=2.7182818,有函数

def poisson_fun(chance_x, case_list = [0],mean_num = 0):  chance_x_fact = fact_fun(chance_x)  e = 2.7182818  if len_fun(case_list) == 1 and case_list[0] == 0:    poisson_num = ((e ** (0-mean_num)) * mean_num ** chance_x) / chance_x_fact  else:    mean_num = sum_mean_fun(case_list)    poisson_num = ((e ** (0-mean_num)) * mean_num ** chance_x) / chance_x_fact  return poisson_num

这个函数需要说明下,实际需要的是两个参数,一个平均值另一个是期望统计量,之所以指定了3个函数是因为可能输入的不一定是一个数字,也可能是个list,那么会有两种计算方式,这个已在if中体现,引用方法有两种,例如

if __name__ == '__main__':  # 第一种  poisson_rate = poisson_fun(mean_num = 10,chance_x = 13)  print poisson_rate   # 第二种  case_list = [8,9,10,11,12]  poisson_rate = poisson_fun(case_list = case_list ,chance_x = 13)  print poisson_rate

 

转载于:https://www.cnblogs.com/xiu123/p/9524333.html

你可能感兴趣的文章
Apple iOS内部开发秘密代号灵感来自滑雪胜地名称
查看>>
第四次作业
查看>>
四则运算2测试
查看>>
软件需求与分析课堂讨论一
查看>>
源码编译方式安装mysql服务 (Centos 6.X)
查看>>
iOS深入学习(UITableView系列2:reloadData)
查看>>
如何使用github上传自己的开源项目教程
查看>>
js网页倒计时功能(天,时,分,秒)
查看>>
简单的rest template,并且gradle打成可执行的jar包
查看>>
对象序列化与反序列化
查看>>
ABP 番外篇-容器
查看>>
图片自动按比例缩小代码(防止页面被图片撑破)
查看>>
C++笔试题2(基础题)
查看>>
543 Diameter of Binary Tree 二叉树的直径
查看>>
MVC如何避免控制器方法接收到的值不能被转换为参数类型
查看>>
HTML元素的一些基本属性(1)
查看>>
bzoj 4261: 建设游乐场 费用流
查看>>
Git创建一个自己的本地仓库
查看>>
十年后,我又开始研究SEO了
查看>>
HTML中 li 标签的value属性兼容问题
查看>>