如何在Python中的Poisson分布中拟合数据框的列

ren*_*kre 3 python poisson scipy dataframe scikit-learn

我一直在尝试找到一种方法来使我的某些列(包含用户 点击数据)适合python中的泊松分布。这些列(例如,click_website_1,click_website_2)的值可能在1到数千之间。我正在尝试这样做,因为一些资源建议这样做:

我们建议不应通过对数转换来对计数数据进行分析,而应使用基于泊松和负二项式分布的模型。

我在scipy和中找到了一些方法numpy,但是这些方法似乎会生成一些具有泊松分布的随机数。但是,我感兴趣的是使我自己的数据适合于泊松分布。有库建议在Python中执行此操作吗?

ors*_*ady 6

这是检查数据是否遵循泊松分布的快速方法。您可以在假设它遵循带速率参数的泊松分布的情况下绘制图lambda = data.mean()

import numpy as np
from scipy.misc import factorial


def poisson(k, lamb):
    """poisson pdf, parameter lamb is the fit parameter"""
    return (lamb**k/factorial(k)) * np.exp(-lamb)

# lets collect clicks since we are going to need it later
clicks = df["clicks_website_1"] 
Run Code Online (Sandbox Code Playgroud)

在这里,我们使用pmf进行位置分布。

现在让我们进行一些建模,从数据(click_website_one)中,我们将使用MLE估计泊松参数,结果只是平均值

lamb = clicks.mean()

# plot the pmf using lamb as as an estimate for `lambda`. 
# let sort the counts in the columns first.

clicks.sort().apply(poisson, lamb).plot()
Run Code Online (Sandbox Code Playgroud)