逻辑回归函数在sklearn上

我正在学习sklearn中的逻辑回归,并发现了这个链接: http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

我已经创建了一个实现,可以显示训练和测试的准确性得分。然而,我不太清楚这是如何实现的。我的问题是:什么是最大似然估计?这是如何计算的?错误度量是什么?使用的优化算法是什么?

我理论上了解上述所有内容,但是我不确定scikit-learn在哪里、何时以及如何计算这些,或者我是否需要在某个时候实现这些。我的准确率达到了83%,这是我的目标,但我对scikit-learn是如何实现这一点感到非常困惑。

有谁能指导我正确的方向吗?


回答:

我最近也开始学习逻辑回归,我仍然不理解许多推导步骤,但我认为我理解了使用哪些公式。

首先,让我们假设你使用的是scikit-learn的最新版本,并且使用的求解器是 solver='lbfgs'(我认为这是默认的)。

代码在这里: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py

什么是最大似然估计?这是如何计算的?

计算似然估计的函数是这个: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py#L57

有趣的一行是:

# Logistic loss is the negative of the log of the logistic function.out = -np.sum(sample_weight * log_logistic(yz)) + .5 * alpha * np.dot(w, w)

这是这个教程的公式7。该函数还计算似然的梯度,然后传递给最小化函数(见下文)。一个重要的事情是,截距是教程中公式的 w0。但这仅在 fit_intercept 为 True 时有效。

错误度量是什么?

对不起,我不确定。

使用的优化算法是什么?

查看代码中的以下几行: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py#L389

这是这个函数 http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_l_bfgs_b.html

一个非常重要的事情是,类别是+1或-1!(对于二元情况,文献中常见的是0和1,但这行不通)

还要注意,所有公式中都使用了numpy的广播规则。(这就是为什么你看不到迭代)

这是我尝试理解代码的努力。我慢慢地变得疯狂,直到拆解scikit-learn的代码(仅适用于二元情况)。这也作为纯Python实现的灵感

希望这对你有帮助。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注