我在理解如何使用泊松分布的GLM模型时遇到了一些困难。
import numpy as npimport scikits.statsmodels as smdataset = 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']].valuesy = dataset.ix[:,['target']].valuessize = 1e5nbeta = 3fam = sm.families.Poisson()glm = sm.GLM(y,X, family=fam)res = glm.fit()
- 我使用”target”列作为目标变量,我应该将目标变量标记为0还是1?
- 谁能解释一下如何获得预测值,因为泊松分布有另一个predict函数?
回答:
Sourceforge目前无法访问。一旦恢复正常,你应该阅读文档和示例。其中有大量关于预测和GLM的使用说明。
如何标记你的目标变量取决于你自己,可能需要在cross-validated上提问。泊松分布适用于计数数据,但也可以用于连续数据,不过你应该清楚自己在做什么。
如果你有0/1数据,你需要使用Logit或Probit模型。类似这样的。你不需要将pandas对象转换为numpy。
import numpy as npimport statsmodels.api as smdataset = 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'] = 1y = dataset['target']size = 1e5nbeta = 3fam = sm.families.Poisson()glm = sm.GLM(y,X, family=fam)res = glm.fit()predict = res.predict()
或者你可以直接使用泊松分布的最大似然估计器。
res = sm.Poisson(y, X).fit()predict = res.predict()