Scikit Learn - 逻辑回归

尽管名为逻辑回归,但它实际上是一种分类算法,而非回归算法。它基于给定的一组自变量,用于估计离散值(0 或 1、是/否、真/假)。它也被称为 logit 或 MaxEnt 分类器。

本质上,它通过使用逻辑函数估计事件发生的概率来衡量分类因变量与一个或多个自变量之间的关系。

sklearn.linear_model.LogisticRegression 是用于实现逻辑回归的模块。

参数

下表列出了 逻辑回归 模块 − 使用的参数。

序号 参数 &说明
1

惩罚 − str,'L1'、'L2'、'elasticnet' 或 none,可选,默认值 = 'L2'

此参数用于指定惩罚(正则化)中使用的范数(L1 或 L2)。

2

双重 −布尔值,可选,默认值 = False

它用于对偶或原始公式,而对偶公式仅适用于 L2 惩罚。

3

tol − 浮点型,可选,默认值 = 1e-4

它表示停止标准的容差。

4

C −浮点型,可选,默认值 = 1.0

它表示正则化强度的倒数,必须始终为正浮点数。

5

fit_intercept − 布尔值,可选,默认值 = True

此参数指定应向决策函数添加一个常数(偏差或截距)。

6

intercept_scaling −浮点型,可选,默认值 = 1

此参数在以下情况下有用:

  • 使用求解器 'liblinear'

  • fit_intercept 设置为 true

7

class_weight − dict 或 'balanced' 可选,默认值 = none

它表示与类别相关的权重。如果我们使用默认选项,则表示所有类别的权重都应该为 1。另一方面,如果您选择 class_weight: balanced,它将使用 y 的值自动调整权重。

8

random_state − int,RandomState 实例或 None,可选,默认值 = none

此参数表示生成的伪随机数的种子,用于对数据进行混洗。以下是选项

  • int − 在本例中,random_state 是随机数生成器使用的种子。

  • RandomState 实例 − 在本例中,random_state 是随机数生成器。

  • None −在本例中,随机数生成器是 np.random 使用的 RandonState 实例。

9

solver − str, {'newton-cg', 'lbfgs', 'liblinear', 'saag', 'saga'}, 可选,默认值 = 'liblinear'

此参数表示在优化问题中使用哪种算法。以下是此参数 − 下的选项属性。

  • liblinear − 对于小型数据集来说,它是一个不错的选择。它还可以处理 L1 惩罚。对于多类别问题,它仅限于一对多策略。

  • newton-cg − 它仅处理 L2 惩罚项。

  • lbfgs − 对于多类别问题,它处理多项式损失。它也仅处理 L2 惩罚项。

  • saga − 对于大型数据集,它是一个不错的选择。对于多类别问题,它还可以处理多项式损失。除了 L1 惩罚项外,它还支持"elasticnet"惩罚项。

  • sag − 它也用于大型数据集。对于多类别问题,它还可以处理多项式损失。

10

max_iter − int,可选,默认值 = 100

顾名思义,它表示求解器收敛所需的最大迭代次数。

11

multi_class − str,{'ovr', 'multinomial', 'auto'},可选,默认值 = 'ovr'

  • ovr − 对于此选项,每个标签都拟合一个二元问题。

  • multimonial − 对于此选项,最小化的损失是整个概率分布上的多项式损失拟合。如果solver = 'liblinear',则无法使用此选项。

  • auto − 如果solver = 'liblinear'或数据为二进制,则此选项将选择'ovr',否则将选择'multinomial'。

12

verbose − int,可选,默认值 = 0

默认情况下,此参数的值为0,但对于liblinear和lbfgs求解器,我们应该将verbose设置为任意正数。

13

warm_start − bool,可选,默认值 = false

将此参数设置为 True,我们可以重用上一次调用 fit 的解作为初始化。如果选择默认值,即 false,则会清除上一次的解。

14

n_jobs − int 或 None,可选,默认值 = None

如果 multi_class = 'ovr',此参数表示在类上并行化时使用的 CPU 核心数。当solver = 'liblinear' 时,此参数会被忽略。

15

l1_ratio −浮点数或 None,可选,dgtefault = None

当 penalty = 'elasticnet' 时使用。它本质上是 Elastic-Net 混合参数,其中 0 < = l1_ratio > = 1。

属性

下表包含 逻辑回归 模块 − 使用的属性。

Sr.No 属性和说明
1

coef_ −数组,形状为 (n_features,) 或 (n_classes, n_features)

用于估计决策函数中特征的系数。当给定问题是二分类问题时,其形状为 (1, n_features)。

2

Intercept_ − 数组,形状为 (1) 或 (n_classes)

表示添加到决策函数中的常数,也称为偏差。

3

classes_ −数组,形状为 (n_classes)

它将提供分类器已知的类别标签列表。

4

n_iter_ − 数组,形状为 (n_classes) 或 (1)

它返回所有类别的实际迭代次数。

实现示例

以下 Python 脚本提供了一个在 scikit-learn 的 iris 数据集上实现逻辑回归的简单示例 −

from sklearn import datasets
from sklearn import linear_model
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y = True)
LRG = linear_model.LogisticRegression(
   random_state = 0,solver = 'liblinear',multi class = 'auto'
)
.fit(X, y)
LRG.score(X, y)

输出

0.96

输出结果显示,上述逻辑回归模型的准确率为 96%。