Python/PyMC3/ArviZ贝叶斯统计实战（下）

function DisplayWindowSize(){

var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

_, ax = plt.subplots(figsize=(10, 5))
ax.hist([y.mean() for y in ppc['y']], bins=19, alpha=0.5)
ax.axvline(data.price.mean())
ax.set(title='Posterior predictive of the mean', xlabel='mean(x)', ylabel='Frequency');


idx变量，一个用数字编码票价类别的分类虚拟变量。

price = data['price'].values
idx = pd.Categorical(data['fare'],
categories=['Flexible', 'Promo', 'Promo +',

groups = len(np.unique(idx))

flat_fares = az.from_pymc3(trace=trace_groups)
fares_gaussian = az.summary(flat_fares)
fares_gaussian

<li><p style="text-align: left;">Cohen’s d是比较两种方法的合适的效应大小。Cohen ‘s d通过标准差来引入每一组的变异性。</p><

><li><p style="text-align: left;">优势概率(ps)定义为随机从一个组取的数据点大于随机从另一个组取的数据点的概率。</p><>

dist = stats.norm()

_, ax = plt.subplots(5, 2, figsize=(20, 12), constrained_layout=True

comparisons = [(i, j) for i in range(6) for j in range(i+1, 6)]
pos = [(k, l) for k in range(5) for l in (0, 1)]

for (i, j), (k, l) in zip(comparisons, pos):
means_diff = trace_groups['μ'][:, i] - trace_groups['μ'][:, j]

d_cohen = (means_diff / np.sqrt((trace_groups['σ'][:, i]**2 + trace_groups['σ'][:, j]**2) / 2)).mean()
ps = dist.cdf(d_cohen/(2**0.5))
az.plot_posterior(means_diff, ref_val=0, ax=ax[k, l])
ax[k, l].set_title(f'$\mu_{i}-\mu_{j}$')
ax[k, l].plot(
0, label=f"Cohen's d = {d_cohen:.2f}\nProb sup = {ps:.2f}", alpha=0)
ax[k, l].legend();

01
def replace_fare(fare):

return 1
elif fare == 'Promo +':
return 2
elif fare == 'Promo':
return 3
elif fare == 'Flexible':
return 4
elif fare == 'Individual-Flexible':
return 5
elif fare == 'Mesa':
return 6

data['fare_encode'] = data['fare'].apply(lambda x: replace_fare(x))

label_encoder = preprocessing.LabelEncoder()
data['train_type_encode']= label_encoder.fit_transform(data['train_type'])

train_type_names = data.train_type.unique()
train_type_idx = data.train_type_encode.values

n_train_types = len(data.train_type.unique())

data[['train_type', 'price', 'fare_encode']].head()

with pm.Model() as hierarchical_model:
# global model parameters
α_μ_tmp = pm.Normal('α_μ_tmp', mu=0., sd=100)
α_σ_tmp = pm.HalfNormal('α_σ_tmp', 5.)
β_μ = pm.Normal('β_μ', mu=0., sd=100)
β_σ = pm.HalfNormal('β_σ', 5.)

# train type specific model parameters
α_tmp = pm.Normal('α_tmp', mu=α_μ_tmp, sd=α_σ_tmp, shape=n_train_types)
# Intercept for each train type, distributed around train type mean
β = pm.Normal('β', mu=β_μ, sd=β_σ, shape=n_train_types)
# Model error
eps = pm.HalfCauchy('eps', 5.)

fare_est = α_tmp[train_type_idx] + β[train_type_idx]*data.fare_encode.values

# Data likelihood
fare_like = pm.Normal('fare_like', mu=fare_est, sd=eps, observed=data.price)

with hierarchical_model:
hierarchical_trace = pm.sample(2000, tune=2000, target_accept=.9)

pm.traceplot(hierarchical_trace, var_names=['α_μ_tmp', 'β_μ', 'α_σ_tmp', 'β_σ', 'eps']);


pm.traceplot(hierarchical_trace, var_names=['α_tmp'], coords={'α_tmp_dim_0': range(5)});


az.plot_forest(hierarchical_trace, var_names=['α_tmp', 'β'], combined=True);

ppc = pm.sample_posterior_predictive(hierarchical_trace,

samples=2000, model=hierarchical_model)
az.r2_score(data.price.values, ppc['fare_like'])


Jupyter notebook可以在Github上找到，享受这一周剩下的时间吧。

Github链接地址：

https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Bayesian%20Statistics%20Python_PyMC3_ArviZ.ipynb

0 条评论

• 【业界】iOS Bug解决办法：如何防止Siri读出隐藏的通知

AiTechYun 编辑：yuxiangyu ? 尽管苹果尚未针对iOS错误展开修复，使得Siri能够读出隐藏的锁屏通知，但以下方法可以解决目前的安全漏洞。 ...

• 使用keras创建一个简单的生成式对抗网络（GAN）

然而，有些恶意的顾客为了获得金钱而出售假酒。在这种情况下，店主必须能够区分假酒和正品葡萄酒。

• 使用Apache MXNet分类交通标志图像

有许多深度学习的框架，例如TensorFlow、Keras、Torch和Caffe,Apache MXNet由于其在多个GPU上的可伸缩性而受到欢迎。在这篇博文...

• 腾讯WeTest的小程序兼容测试实践之路

? 作 者 朱永俊，腾讯IEG高级工程师 商业转载请联系腾讯WeTest获得授权，非商业转载请注明出处。 作者导读 为了提升对微信小程序的测试能力， 腾讯W...

• Python爬虫之JS逆向入门篇

我们都知道现在是大数据时代，用爬虫来获取数据的越来越多，与之对应的就是破解反爬的难度也越来越大

• 面试官常说，培训机构出身的程序员“代码不干净”，是什么意思？

现在很多企业对于培训出来的程序员都带着有色眼镜在看，甚至一些过激的企业直接把培训出来的程序员排除在外，这种做法很明显是不正确的，主要很多培训机构的宣传以及包装对...

• Junit单元测试遇见的一个枚举类型的坑（枚举类型详解）

枚举类型很早就在计算机语言中存在了，主要被用来将一组相似的值包含进一种类型中，这种类型的名称被定义成独一无二的类型描述符，这就是枚举类型。

• mstsc远程报：这可能是由于CredSSP 加密Oracle修正的两种完美解决方法

查看win10系统升级日志，果然找到了原因，是因为CVE-2018-0886 的 CredSSP 2018 年 5 月 8 日更新默认设置从“易受攻击”更改为“...

• 使用PHP生成ICO图标

今天教大家如何使用PHP生成ico图标，ico图标在每个网站中都需要用到的，使用方法也是很简单的，基本上以下面的方式为主，还有其他的方式。