【发布时间】:2011-11-22 16:57:30
【问题描述】:
我正在寻找 Python 中逻辑回归(非正则化)的良好实现。我正在寻找一个也可以为每个向量获取权重的包。谁能建议一个好的实现/包? 谢谢!
【问题讨论】:
-
这篇文章没有什么相关的,我也尝试过使用 scipy,但找不到任何使用权重...
标签: python regression
我正在寻找 Python 中逻辑回归(非正则化)的良好实现。我正在寻找一个也可以为每个向量获取权重的包。谁能建议一个好的实现/包? 谢谢!
【问题讨论】:
标签: python regression
我注意到这个问题现在已经很老了,但希望这可以帮助某人。使用 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。
【讨论】:
LogisticRegression 中的 multi_class='multinomial' 选项
“平衡”模式使用 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 数组。查看文档 -
希望这样做...
【讨论】:
我想你想要的是statsmodels。它对 GLM 和其他线性方法有很好的支持。如果您来自 R,您会发现语法非常熟悉。
【讨论】:
【讨论】:
sklearn.linear_model.LogisticRegression 是一个类,他的fit 方法让你定义权重。
fit 方法,但它只接受标签和特征的参数。不是重量。
fit方法带了一个class_weight参数。它现在位于__init__。这可能是您正在关注的内容。
你知道 Numpy 吗?如果不是,请查看 Scipy 和 matplotlib。
【讨论】: