python计算概率密度最大的值_Python机器学习(六十四)SciPy 统计

scipy.stats模块包含了统计工具以及概率分析工具。

分布: 直方图和概率密度函数

给定随机过程的观测值,其直方图是随机过程的概率密度函数PDF的估计量:

示例

importnumpy as np

samples= np.random.normal(size=1000)

bins= np.arange(-4, 5)

bins

histogram= np.histogram(samples, bins=bins, normed=True)[0]

bins= 0.5*(bins[1:] + bins[:-1])

binsfrom scipy importstats

pdf= stats.norm.pdf(bins) #norm是一个分布对象

importmatplotlib.pyplot as plt

plt.plot(bins, histogram)

plt.plot(bins, pdf)#plt.savefig('./st1-1.png') # 保存要显示的图片

plt.show()

输出

如果我们知道随机过程属于一个给定的随机过程家族,比如正态过程,我们就可以对观测值进行最大似然拟合来估计潜在分布的参数。这里我们将一个正态过程与观察到的数据进行拟合:

loc, std =stats.norm.fit(samples)print(loc, std)

输出

0.0030534094701394794 1.0143664443890137

分布对象

scipy.stats.norm是一个分布对象: scipy.stats中的每个分布都表示为一个对象。例如:正态分布对象,还有PDF, CDF等等。

平均值、中位数和百分位数

均值是样本的平均值:

np.mean(samples)

中位数是样本的中间值:

np.mean(samples)

中位数也是百分位数50,因为50%的观察值低于它:

stats.scoreatpercentile(samples, 50)

同样,我们可以计算百分位数90:

stats.scoreatpercentile(samples, 90)

统计检验

统计检验是一种决策指标。例如,如果我们有两组观测值,假设是高斯过程产生的,我们可以用T检验来判断两组观测值的均值是否存在显著差异:

a = np.random.normal(0, 1, size=100)

b= np.random.normal(1, 1, size=10)

stats.ttest_ind(a, b)

输出

Ttest_indResult(statistic=-1.497229887954618, pvalue=0.1372503797899352)

产生的输出包括:

T统计值/statistic: 是一个数字,其符号与两个随机过程的差值成正比,其大小与该差值的显著性有关。

p值/pvalue: 两个过程相同的概率。如果它接近1,这两个过程几乎肯定是相同的。越接近于零,这些过程就越有可能有不同均值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值