有没有办法实现样本权重?

时间:2014-04-28 11:03:36

标签: python logistic-regression statsmodels sample

我在Python中使用statsmodels进行逻辑回归分析。例如:

import statsmodels.api as sm
import numpy as np
x = arange(0,1,0.01)
y = np.random.rand(100)
y[y<=x] = 1
y[y!=1] = 0
x = sm.add_constant(x)
lr = sm.Logit(y,x)
result = lr.fit().summary()

但我想为我的观察定义不同的权重。我组合了4个不同大小的数据集,并希望对分析进行加权,使得来自最大数据集的观测结果不会影响模型。

2 个答案:

答案 0 :(得分:3)

我花了一些时间来解决这个问题,但实际上很容易在statsmodels中创建一个logit模型,每行加权行/多次观察。以下是它的完成方式:

import statsmodels.api as sm
logmodel=sm.GLM(trainingdata[['Successes', 'Failures']], trainingdata[['const', 'A', 'B', 'C', 'D']], family=sm.families.Binomial(sm.families.links.logit)).fit()

答案 1 :(得分:1)

不确定关于statsmodel,

但是用scikit学习很容易。您可以使用SGDClassifier和sample_weight

示例:

import numpy as np
from sklearn import linear_model
X = [[0., 0.], [1., 1.]]
y = [0, 1]
weight=[0.5,0.5]
#log implies logistic regression
clf = linear_model.SGDClassifier(loss="log" )
clf.fit(X, y, sample_weight =weight)
print(clf.predict([[-0.8, -1]]))