Python中的加权逻辑回归
我在找一个好的Python实现的逻辑回归(不带正则化)。我希望这个包还能给每个向量提供权重。有没有人能推荐一个好的实现或包呢?谢谢!
5 个回答
4
我觉得你需要的是 statsmodels
。它对广义线性模型(GLM)和其他线性方法支持得很好。如果你之前用过R语言,你会发现它的语法非常熟悉。
7
“平衡”模式会根据y的值,自动调整权重,这个调整是和输入数据中各个类别的频率成反比的,具体计算方式是 n_samples / (n_classes * np.bincount(y))。
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(class_weight='balanced')
model = model.fit(X, y)
编辑
在fit方法中可以添加样本权重。你只需要传入一个包含n_samples的数组。可以查看文档了解更多信息 -
希望这能帮到你...
27
我注意到这个问题已经有点时间了,但希望这能帮助到某些人。在sklearn库中,你可以使用SGDClassifier这个类来创建一个逻辑回归模型,只需把'log'作为损失函数传入就可以了:
sklearn.linear_model.SGDClassifier(loss='log', ...).
这个类在fit()
函数中实现了加权样本:
classifier.fit(X, Y, sample_weight=weights)
这里的weights是一个数组,里面包含了样本的权重,显然这个数组的长度必须和X中的数据点数量相同。
想了解更多信息,可以查看http://scikit-learn.org/dev/modules/generated/sklearn.linear_model.SGDClassifier.html上的完整文档。