8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用 scikit-learn 和 cvxpy 的不同解决方案

redoctober 2月前

21 0

我正在尝试使用 CVXPY 库编写逻辑回归模型。到目前为止,我编写的代码“有效”,因为它可以执行,不会产生任何错误消息,并且

我正在尝试使用 CVXPY 库编写逻辑回归模型。到目前为止,我编写的代码“有效”,因为它可以执行,不会产生任何错误消息并提供解决方案。但是,此解决方案与逻辑回归的 scikit-learn 实现提供的解决方案不匹配。

我知道 scikit-learns 实现默认包含 L2 惩罚,在下面的代码示例中,您将看到我将其更改为 None。我还从 sklearn 模型中删除了截距。但解决方案仍然不匹配:

import cvxpy as cp
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression

X, y = make_classification(n_features=10, random_state=42)

sk = LogisticRegression(penalty=None, fit_intercept=False)
sk.fit(X, y)
print(sk.coef_)

输出结果如下:

[[-13.46939518  -7.09935934  19.41989522 -10.36990818   3.76335965
2.84616038   3.32474461  -2.84162961   3.13246888   1.08887971]]

现在,cvxpy 实现:

beta = cp.Variable(X.shape[1])
log_likelihood = cp.sum(cp.multiply(y, X @ beta) - cp.logistic(X @ beta))
problem = cp.Problem(cp.Maximize(log_likelihood/X.shape[0]))
problem.solve()
beta = beta.value
print(beta)

得出解决方案:

[-31.38130594 -10.72178524  44.07489985 -34.06127916   8.01950276
   5.96941765   9.6143194   -7.88785049  12.96349703  -0.13264449]
帖子版权声明 1、本帖标题:使用 scikit-learn 和 cvxpy 的不同解决方案
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由redoctober在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 查看两种结果的测试或验证结果会更有帮助。权重分配可能各不相同,但优化目标(即,在这种情况下,分类误差最小)可能由两种方法同样达到。分类的最终目的是建立决策边界,因此两个看似不同的方法也可能产生相同的结果。

返回
作者最近主题: