使用GLM的问题

时间:2014-04-22 09:01:06

标签: machine-learning glm statsmodels

我在理解如何使用带有泊松的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()
  • 我正在使用" target"列作为目标,我应该将目标标记为O还是1?
  • 任何人都可以解释我是如何得到预测值的,因为泊松有另一个函数predict

1 个答案:

答案 0 :(得分:2)

Sourceforge现在倒闭了。在备份时,您应该通读documentationexamples。有很多关于预测和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()