我在理解如何使用带有泊松的GLM模型时遇到了一些困难。
import numpy as np
import scikits.statsmodels as sm
dataset = pd.DataFrame({'A':np.random.rand(100)*1000,
'B':np.random.rand(100)*100,
'C':np.random.rand(100)*10,
'target':np.random.rand(100)})
X = dataset.ix[:,['A','B','C']].values
y = dataset.ix[:,['target']].values
size = 1e5
nbeta = 3
fam = sm.families.Poisson()
glm = sm.GLM(y,X, family=fam)
res = glm.fit()
答案 0 :(得分:2)
Sourceforge现在倒闭了。在备份时,您应该通读documentation和examples。有很多关于预测和GLM的使用说明。
如何标记您的目标取决于您,可能是交叉验证的问题。 Poisson用于计数,但可用于连续数据,但您应该知道自己在做什么。
如果你有0/1,那么你想要一个Logit或Probit模型。像这样的东西。您不需要将pandas对象转换为numpy。
import numpy as np
import statsmodels.api as sm
dataset = pd.DataFrame({'A':np.random.rand(100)*1000,
'B':np.random.rand(100)*100,
'C':np.random.rand(100)*10,
'target':np.random.randint(0, 5, 100)})
X = dataset[['A','B','C']]
X['constant'] = 1
y = dataset['target']
size = 1e5
nbeta = 3
fam = sm.families.Poisson()
glm = sm.GLM(y,X, family=fam)
res = glm.fit()
predict = res.predict()
或者你可以直接使用Poisson的最大似然估计。
res = sm.Poisson(y, X).fit()
predict = res.predict()