2011-09-22 218 views
14

我正在寻找Python中逻辑回归(非规则化)的良好实现。我正在寻找一个可以为每个矢量获取权重的软件包。任何人都可以提出一个好的实现/包? 谢谢!Python中的加权逻辑回归

+0

http://stackoverflow.com/questions/3754051/python-or-sql-logistic-regression – Mansuro

+1

没有相关的pssible重复在这篇文章中,我也尝试过使用scipy,但是找不到任何权重...... – user5497

回答

-2

你知道Numpy吗?如果不是,请看看Scipy和matplotlib。

+2

Scipy和Numpy dot都没有逻辑回归实现(或者我找不到任何...)。 matplotlib主要用于图形,绘图等... – user5497

+1

我觉得这[博客](http://blog.smellthedata.com/2009/06/python-logistic-regression-with-l2.html) – gunzapper

+0

谢谢!我看到它,但它实现了L2规则化逻辑回归(而不是常规逻辑回归),并且除此之外它没有实现权重... – user5497

0
+1

谢谢,但是我找不到如何给每个向量赋予不同的权重。 – user5497

+0

'sklearn.linear_model.LogisticRegression'是一个类,他的'fit'方法可以让你定义权重。 – ohe

+0

@ohe怎么样?我找到了'fit'方法,但它只接受标签和特征的参数。不是重量。 –

20

我注意到这个问题是很老,但现在希望这可以帮助别人。随着sklearn,您可以使用SGDClassifier类通过简单地传递“登录”作为损失来创建一个逻辑回归模型:

sklearn.linear_model.SGDClassifier(loss='log', ...). 

这个类在fit()函数实现加权样本:

classifier.fit(X, Y, sample_weight=weights) 

其中权重是包含样本权重的数组,其必须(明显)与X中数据点的数量相同。

有关完整文档,请参阅http://scikit-learn.org/dev/modules/generated/sklearn.linear_model.SGDClassifier.html

+3

由Olivier Grisel支持https://twitter.com/ogrisel/status/476367379413610497 – r0u1i

+1

这对于多类问题使用one-vs-rest并且看起来不像它支持'LogisticRegression'中的'multi_class ='multinomial''选项 – akxlr

4

的“平衡”的模式使用y的值来自动调节权重成反比类的频率在输入数据作为N_SAMPLES次/(n_classes * np.bincount(Y))

from sklearn.linear_model import LogisticRegression 

model = LogisticRegression(class_weight='balanced') 

model = model.fit(X, y) 

编辑

样品重量可以在拟合方法中添加。你只需要传递一个n_samples数组。检查出的文档 -

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

希望这样做吧...

+0

这是指类别不平衡,但如果我们想要为每个样本使用不同的权重? – mrgloom

+0

好问题@mrgloom!您可以通过提供权重词典而不是“平衡”来指定权重。与{class_label:weight}形式的类相关的权重。如果没有给出,所有班级都应该有一个重量。 –

+0

我需要为每个样本单独加权,而不是每个类。 – mrgloom