首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的零膨胀泊松模型

python中的零膨胀泊松模型
EN

Stack Overflow用户
提问于 2018-06-23 09:26:31
回答 2查看 2.6K关注 0票数 2

我想使用python3来构建零膨胀泊松模型。我在statsmodel库中找到了函数statsmodels.discrete.count_model.ZeroInflatePoisson

我只是想知道怎么用。看来我应该这么做:

ZIFP(Y_train,X_train).fit()

但当我想用X_test做预测的时候。

它告诉我X_test的长度不适合X_train。或者还有另一个适合这种型号的包?下面是我使用的代码:

代码语言:javascript
复制
X1 = [random.randint(0,1) for i in range(200)]
X2 = [random.randint(1,2) for i in range(200)]
y = np.random.poisson(lam = 2,size = 100).tolist()
for i in range(100):y.append(0)
df['x1'] = x1
df['x2'] = x2
df['y'] = y
df_x = df.iloc[:,:-1]
x_train,x_test,y_train,y_test = train_test_split(df_x,df['y'],test_size = 0.3)
clf = ZeroInflatedPoisson(endog = y_train,exog = x_train).fit()
clf.predict(x_test)

ValueError:operands could not be broadcat together with shapes (140,)(60,)

也曾尝试过:

代码语言:javascript
复制
clf.predict(x_test,exog = np.ones(len(x_test)))

ValueError: shapes(60,) and (1,) not aligned: 60 (dim 0) != 1 (dim 0)
EN

回答 2

Stack Overflow用户

发布于 2018-06-23 18:01:36

在我看来这是个窃听器。

据我所知:

如果没有为通货膨胀模型指定的解释变量exog_infl,则使用一组变量来建模恒定的通货膨胀概率。但是,如果预测中的exog_infl为None,则使用model.exog_infl,它是一个长度等于训练样本的数组。

就像在预测中指定一个长度正确的一维数组一样,应该是可行的。

尝试:

代码语言:javascript
复制
clf.predict(test_x, exog_infl=np.ones(len(test_x))

我想,如果在模型中使用暴露,但在预测中没有明确指定,也会出现同样的问题。

票数 3
EN

Stack Overflow用户

发布于 2019-05-23 07:24:33

我遇到了同样的问题,把我放在了这条线上。正如Josef所指出的,您似乎需要为exog_infl提供一个长度正确的一维数组才能工作。但是,Josef提供的代码忽略了一维数组部分,因此生成所需数组所需的整行代码实际上是

代码语言:javascript
复制
clf.predict(test_x, exog_infl=np.ones((len(test_x),1))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50999793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档