猿问

概率分布模型

我正在尝试运行python在此数据科学站点上用作示例的脚本:https : //www.datascience.com/blog/introduction-to-bayesian-inference-learn-data-science-tutorials


import numpy as np

from scipy.misc import factorial

import matplotlib.pyplot as plt

%matplotlib inline


plt.rcParams['figure.figsize'] = (16,7)


def likelihood(theta, n, x):

    """

    likelihood function for a binomial distribution


    n: [int] the number of experiments

    x: [int] the number of successes

    theta: [float] the proposed probability of success

    """

    return (factorial(n) / (factorial(x) * factorial(n - x))) \

            * (theta ** x) * ((1 - theta) ** (n - x))


# The number of impressions for our facebook-yellow-dress campaign

n_impressions = 10


# The number of clicks for our facebook-yellow-dress campaign

n_clicks = 7


# Observed click through rate

ctr = n_clicks / n_impressions


# 0 to 1, all possible click through rates

possible_theta_values = map(lambda x: x/100., range(100))


# Evaluate the likelihood function for possible click through rates

likelihoods = map(lambda theta: likelihood(theta, n, x)\

                                , possible_theta_values)


# Pick the best theta

mle = possible_theta_values[np.argmax(likelihoods)]


# Plot

f, ax = plt.subplots(1)

ax.plot(possible_theta_values, likelihoods)

ax.axvline(mle, linestyle = "--")

ax.set_xlabel("Theta")

ax.set_ylabel("Likelihood")

ax.grid()

ax.set_title("Likelihood of Theta for New Campaign")

plt.show()

我正在使用 Spyder。我得到的错误包括:


    %matplotlib inline

    ^

SyntaxError: invalid syntax


mle = possible_theta_values[np.argmax(likelihoods)]

TypeError: 'map' object is not subscriptable


likelihoods = list(map(lambda theta: likelihood(theta, ctr, x)\

NameError: name 'x' is not defined


30秒到达战场
浏览 164回答 1
1回答

BIG阳

对代码进行少量修改以使其工作。我不得不转换的map可迭代对象名单,让你的代码工作,你提到的原因:TypeError: 'map' object is not subscriptable。我还必须明确定义x数组才能在计算likelihoods.# 0 to 1, all possible click through ratespossible_theta_values = list(map(lambda x: x/100., range(100)))n = n_impressionsx = n_clicks# Evaluate the likelihood function for possible click through rateslikelihoods = list(map(lambda theta: likelihood(theta, n, x)\                                , possible_theta_values))
随时随地看视频慕课网APP

相关分类

Python
我要回答