Python中的加权逻辑回归

16 投票
5 回答
28742 浏览
提问于 2025-04-17 02:50

我在找一个好的Python实现的逻辑回归(不带正则化)。我希望这个包还能给每个向量提供权重。有没有人能推荐一个好的实现或包呢?谢谢!

5 个回答

4

我觉得你需要的是 statsmodels。它对广义线性模型(GLM)和其他线性方法支持得很好。如果你之前用过R语言,你会发现它的语法非常熟悉。

statsmodels 加权回归

开始使用 statsmodels 的指南

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的数组。可以查看文档了解更多信息 -

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression.fit

希望这能帮到你...

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上的完整文档。

撰写回答