scikit 如何学习逻辑回归以进行分类或回归

     2023-03-12     267

关键词:

【中文标题】scikit 如何学习逻辑回归以进行分类或回归【英文标题】:how scikit learn figure out logistic regression for classification or regression 【发布时间】:2017-01-01 09:17:36 【问题描述】:

我认为逻辑回归可以用于回归(获取 0 和 1 之间的数字,例如使用逻辑回归来预测 0 和 1 之间的概率)和分类。问题是,似乎在我们提供了训练数据和目标之后,逻辑回归可以自动判断我们是在做回归还是在做分类?

例如,在下面的示例代码中,逻辑回归发现我们只需要输出为0, 1, 2 的三个类别之一,而不是02 之间的任何数字?只是好奇逻辑回归如何自动判断它是在做回归(输出是连续范围)还是分类(输出是离散)问题?

http://scikit-learn.org/stable/auto_examples/linear_model/plot_iris_logistic.html

print(__doc__)


# Code source: Gaël Varoquaux
# Modified for documentation by Jaques Grobler
# License: BSD 3 clause

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model, datasets

# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features.
Y = iris.target

h = .02  # step size in the mesh

logreg = linear_model.LogisticRegression(C=1e5)

# we create an instance of Neighbours Classifier and fit the data.
logreg.fit(X, Y)

# Plot the decision boundary. For that, we will assign a color to each
# point in the mesh [x_min, m_max]x[y_min, y_max].
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()])

# Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.figure(1, figsize=(4, 3))
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)

# Plot also the training points
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolors='k', cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')

plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())

plt.show()

【问题讨论】:

I think logistic regression could be used for both regression [...] and classification - 原则上是的,但是如果人们说逻辑回归,他们总是指分类算法(是的,这很奇怪)。回归案例是 generalized linear models 的一个特例,带有 logit 链接功能。 @cel,很好的赶上和投票。如果我希望逻辑回归输出值在 0 和 1 之间,我应该怎么做?假设 0 表示人们没有购买东西,1 表示人们购买了东西,我想使用逻辑回归预测购买的概率。在我的例子中,目标只有值 0 和 1,但我想预测一个介于 0 和 1 之间的浮点数的概率。 @LinMa 使用 logreg.predict_proba() scikit-learn.org/stable/modules/generated/… 谢谢@joc,投票。我认为 sigmoid 函数输出 0 到 1 之间的连续值,但 scikit 中的逻辑回归默认输出 0 或 1 用于分类问题。只是好奇 scikit learn 如何自动计算并将输出归一化为 0 或 1,是否有阈值 scikit learn 逻辑回归利用底层?谢谢。 【参考方案1】:

逻辑回归通常使用交叉熵成本函数,该函数根据二元误差对损失进行建模。此外,逻辑回归的输出通常在决策边界处遵循 sigmoid,这意味着虽然决策边界可能是线性的,但输出(通常被视为代表边界任一侧两个类别之一的点的概率)转换以非线性方式。这将使您的回归模型从 0 到 1 成为一个非常特殊的非线性函数。在某些情况下这可能是可取的,但通常可能并不可取。

您可以将逻辑回归视为提供表示是否属于某个类别的概率的幅度。如果您考虑具有两个自变量的二元分类器,您可以描绘一个表面,其中决策边界是概率为 0.5 的拓扑线。在分类器确定类的情况下,表面要么在高原上(概率 = 1),要么在低洼区域(概率 = 0)。从低概率区域到高概率区域的转换通常遵循 sigmoid 函数。

您可以查看 Andrew Ng 的 Coursera 课程,该课程有一组关于逻辑回归的课程。 This 是类中的第一个。我有一个 github 存储库,它是该类输出的 R 版本,here,您可能会发现它有助于更​​好地理解逻辑回归。

【讨论】:

您好约翰,感谢您的回复。我了解逻辑回归的工作原理。我的问题更多关于 scikit learn 部分,你可以参考我的帖子示例代码,我的问题是为什么预测结果是离散的 0、1 或 2,而不是连续的 sigmoid 函数输出?只是想知道 scikit learn 如何自动找出我需要一个分类输出(离散)而不是连续输出。 顺便说一句,约翰,为您的耐心回答投票。对于您的回复,有一点我不太清楚。我总是使用 EM(最大似然)来估计参数w,它与这里的交叉熵有什么关系? 当你说参数w时,你的意思是class_weight吗?我在 scikit-learn 文档中没有看到 w 参数。很抱歉造成混乱。 啊,是的。通常,您使用阈值将逻辑回归的输出(通常被视为 0 到 1 之间的概率)转换为预测(0 或 1)。所以,这绝对是正在发生的事情。我不确定 Scikit learn 是否允许您设置阈值。关于交叉熵和寻找最优系数集,损失函数是凸的,scikit learn 提供了几种不同的凸优化方法来解决优化问题。 在多类情况下,逻辑回归类使用一对多方案。查看 scikit learn 代码,这将阈值设置为 0.5,并根据该阈值对概率预测进行加权以提供预测。

如何完整地掌握一个机器学习模型

...法,以加深对算法的理解。使用现有工具库:熟练掌握如scikit-learn、TensorFlow、Keras、PyTorch等机器学习框架,了解如何用这些工具快速搭建和训练模型。模型评估与调优:学会使用各种评估指标(如准确率、召回率、F1分数等)评... 查看详情

使用 pandas 和 scikit (OneHotEncoder) 对逻辑回归的分类变量进行虚拟化

】使用pandas和scikit(OneHotEncoder)对逻辑回归的分类变量进行虚拟化【英文标题】:Dummifycategoricalvariablesforlogisticregressionwithpandasandscikit(OneHotEncoder)【发布时间】:2020-04-1606:41:53【问题描述】:我在scikit阅读了有关新事物的this博客。O... 查看详情

机器学习系列7基于python的scikit-learn库构建逻辑回归模型(代码片段)

课前测验本文所用数据免费下载在本文中,你将学习:0用于数据可视化的新库1逻辑回归原理及技术目录一、内容介绍二、理论知识1.分类与回归的区别2.逻辑回归与其他回归的区别3.逻辑回归的数学原理①逻辑回归基本原... 查看详情

机器学习的分类方法——逻辑回归

  这个算法看得一知半解的,无论如何,先把理解的写下来,往后再迭代。还是以问题为导向:这个分类模型如何构建?这个模型的分类原理?如何求解模型的参数?逻辑回归模型有什么优点?  第一个问题,对于简单的线... 查看详情

Scikit Learn:逻辑回归错误

】ScikitLearn:逻辑回归错误【英文标题】:ScikitLearn:LogisticRegressionError【发布时间】:2016-02-2101:00:14【问题描述】:我正在尝试使用scikitlearn对我的数据(6个分类,1个整数)运行逻辑回归。我正在关注scikit学习文档,但是在尝试... 查看详情

哪个更快?逻辑回归或线性核支持向量机?

...时间】:2016-04-2106:32:32【问题描述】:我正在使用python(scikit-learn)进行机器学习,使用相同的数据但使用不同的分类器。当我使用500k数据时,LR和SVM(线性内核)大约需要相同的时间,而SVM(带有多项式内核)则需要永远。但是 查看详情

如何使用 Python 和 Scikit 进行线性回归学习使用一种热编码?

】如何使用Python和Scikit进行线性回归学习使用一种热编码?【英文标题】:HowtodolinearregressionusingPythonandScikitlearnusingonehotencoding?【发布时间】:2017-05-1013:31:06【问题描述】:我正在尝试将线性回归与python和scikitlearn结合使用来回... 查看详情

在 Python 中实现逻辑回归时 Scikit-learn ValueError

】在Python中实现逻辑回归时Scikit-learnValueError【英文标题】:Scikit-learnValueErrorwhenimplementinglogisticregressioninPython【发布时间】:2014-09-1722:22:59【问题描述】:我是机器学习的新手,我正在尝试使用scikit-learn在Python中设置逻辑回归以... 查看详情

如何正确手动重新创建 sklearn (python) 逻辑回归 predict_proba 结果以进行多重分类

】如何正确手动重新创建sklearn(python)逻辑回归predict_proba结果以进行多重分类【英文标题】:HowdoIcorrectlymanuallyrecreatesklearn(python)logisticregressionpredict_probaoutcomeformultipleclassification【发布时间】:2017-11-0419:50:25【问题描述】:如果我... 查看详情

带权重的 Scikit-Learn 分类和回归

】带权重的Scikit-Learn分类和回归【英文标题】:Scikit-LearnClassificationandRegressionwithWeights【发布时间】:2013-06-2008:55:19【问题描述】:如果我想对每个样本进行不同的加权,我该如何在sklearn中进行分类或回归?有没有办法使用自定... 查看详情

Scikit-Learn 逻辑回归严重过拟合数字分类训练数据

】Scikit-Learn逻辑回归严重过拟合数字分类训练数据【英文标题】:Scikit-Learn\'sLogisticRegressionseverelyoverfitsdigitclassificationtrainingdata【发布时间】:2021-01-0923:30:03【问题描述】:我正在使用Scikit-Learn的逻辑回归算法来执行数字分类。... 查看详情

Scikit 学习逻辑回归混淆

】Scikit学习逻辑回归混淆【英文标题】:ScikitLearnLogisticRegressionconfusion【发布时间】:2015-08-0515:43:24【问题描述】:我在理解sckit-learn的LogisticRegression()方法时遇到了一些麻烦。这是一个简单的例子importnumpyasnpimportpandasaspdimportmatpl... 查看详情

andrewng机器学习:逻辑回归

1.逻辑回归解决什么问题?逻辑回归用于分类问题。对于二分类问题,输入多个特征,输出为是或不是(也可以写作1或0)。逻辑回归就是这样一个用于分类的模型。2.什么是逻辑回归?逻辑回归建立在线性回归的基础上。首先,... 查看详情

sklearn (scikit-learn) 逻辑回归包——设置训练的分类系数。

】sklearn(scikit-learn)逻辑回归包——设置训练的分类系数。【英文标题】:sklearn(scikit-learn)logisticregressionpackage--settrainedcoefficientsforclassification.【发布时间】:2012-01-2206:33:47【问题描述】:于是我阅读了scikit-learn包webpate:http://scikit... 查看详情

如何在使用 Scikit-learn 实现逻辑回归时调整阈值?

】如何在使用Scikit-learn实现逻辑回归时调整阈值?【英文标题】:HowcanIadjustthethresholdwhileimplementinglogisticregressionusingScikit-learn?【发布时间】:2018-11-0518:44:45【问题描述】:在使用Scikit-learn执行二进制分类时,假设我想将阈值设置... 查看详情

如何在 scikit-learn 中实现多项式逻辑回归?

】如何在scikit-learn中实现多项式逻辑回归?【英文标题】:Howtoimplementpolynomiallogisticregressioninscikit-learn?【发布时间】:2019-09-2001:52:32【问题描述】:我正在尝试创建一个非线性逻辑回归,即使用scikit-learn的多项式逻辑回归。但我... 查看详情

统计学习方法五逻辑回归分类

逻辑回归分类1,概念  2,算法流程      3,多分类逻辑回归  4,逻辑回归总结 优点:1)预测结果是界于0和1之间的概率;2)可以适用于连续性和类别性自变量;3)容易使用和解释;缺点:1)对模型中自变量多... 查看详情

逻辑回归理解及代码实现

...回归本文算法均使用python3实现1.什么是逻辑回归??《机器学习实战》一书中提到:利用逻辑回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类(主要用于解决二分类问题)。??由以上描述我们... 查看详情