我想使用python3来构建零膨胀泊松模型。我在statsmodel库中找到了函数statsmodels.discrete.count_model.ZeroInflatePoisson。
我只是想知道怎么用。看来我应该这么做:
ZIFP(Y_train,X_train).fit()。
但当我想用X_test做预测的时候。
它告诉我X_test的长度不适合X_train。或者还有另一个适合这种型号的包?下面是我使用的代码:
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,)也曾尝试过:
clf.predict(x_test,exog = np.ones(len(x_test)))
ValueError: shapes(60,) and (1,) not aligned: 60 (dim 0) != 1 (dim 0)发布于 2018-06-23 18:01:36
在我看来这是个窃听器。
据我所知:
如果没有为通货膨胀模型指定的解释变量exog_infl,则使用一组变量来建模恒定的通货膨胀概率。但是,如果预测中的exog_infl为None,则使用model.exog_infl,它是一个长度等于训练样本的数组。
就像在预测中指定一个长度正确的一维数组一样,应该是可行的。
尝试:
clf.predict(test_x, exog_infl=np.ones(len(test_x))我想,如果在模型中使用暴露,但在预测中没有明确指定,也会出现同样的问题。
发布于 2019-05-23 07:24:33
我遇到了同样的问题,把我放在了这条线上。正如Josef所指出的,您似乎需要为exog_infl提供一个长度正确的一维数组才能工作。但是,Josef提供的代码忽略了一维数组部分,因此生成所需数组所需的整行代码实际上是
clf.predict(test_x, exog_infl=np.ones((len(test_x),1))https://stackoverflow.com/questions/50999793
复制相似问题