当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn LogisticRegression用法及代码示例


本文简要介绍python语言中 sklearn.linear_model.LogisticRegression 的用法。

用法:

class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

逻辑回归(又名 logit,MaxEnt)分类器。

在多类情况下,如果‘multi_class’ 选项设置为‘ovr’,则训练算法使用one-vs-rest (OvR) 方案,如果‘multi_class’ 选项设置为‘multinomial’,则使用cross-entropy 损失。 (目前,‘multinomial’ 选项仅受 ‘lbfgs’, ‘sag’, ‘saga’ 和“newton-cg”求解器支持。)

该类使用‘liblinear’库、‘newton-cg’、‘sag’, ‘saga’和‘lbfgs’求解器实现正则化逻辑回归。请注意,默认情况下应用正则化。它可以处理密集和稀疏输入。使用C-ordered数组或包含64位浮点的CSR矩阵以获得最佳性能;任何其他输入格式都将被转换(和复制)。

‘newton-cg’、‘sag’ 和 ‘lbfgs’ 求解器仅支持具有原始公式的 L2 正则化,或不支持正则化。 ‘liblinear’ 求解器支持 L1 和 L2 正则化,仅针对 L2 惩罚使用对偶公式。仅 ‘saga’ 求解器支持 Elastic-Net 正则化。

在用户指南中阅读更多信息。

参数

penalty{‘l1’, ‘l2’,‘elasticnet’, ‘none’},默认='l2'

指定惩罚的范数:

  • 'none' : 不加罚分;
  • 'l2' : 添加L2惩罚项,默认选择;
  • 'l1' : 添加 L1 惩罚项;
  • 'elasticnet' :添加了 L1 和 L2 惩罚项。

警告

某些惩罚可能不适用于某些求解器。请参阅下面的参数solver,以了解惩罚和求解器之间的兼容性。

dual布尔,默认=假

双重或原始配方。对偶公式仅适用于使用 liblinear 求解器的 l2 惩罚。当 n_samples > n_features 时首选 dual=False。

tol浮点数,默认=1e-4

停止标准的公差。

C浮点数,默认=1.0

正则化强度的倒数;必须是正浮点数。与支持向量机一样,较小的值指定更强的正则化。

fit_intercept布尔,默认=真

指定是否应将常数(也称为偏差或截距)添加到决策函数。

intercept_scaling浮点数,默认=1

仅当使用求解器 ‘liblinear’ 并且 self.fit_intercept 设置为 True 时才有用。在这种情况下,x 变为 [x, self.intercept_scaling],即,将常数值等于 intercept_scaling 的 “synthetic” 特征附加到实例向量。截距变为 intercept_scaling * synthetic_feature_weight

笔记!合成特征权重像所有其他特征一样受到 l1/l2 正则化。为了减少正则化对合成特征权重(因此对截距)的影响,必须增加intercept_scaling。

class_weightdict或‘balanced’,默认=无

{class_label: weight} 形式的类关联的权重。如果没有给出,所有的类都应该有一个权重。

“balanced” 模式使用 y 的值自动调整与输入数据中的类频率成反比的权重,如 n_samples / (n_classes * np.bincount(y))

请注意,如果指定了 sample_weight,这些权重将乘以 sample_weight(通过 fit 方法传递)。

random_stateint,RandomState 实例,默认=无

solver == ‘sag’, ‘saga’ 或 ‘liblinear’ 时使用以打乱数据。详细信息请参见术语表。

solver{'newton-cg',‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},默认='lbfgs'

用于优化问题的算法。默认为‘lbfgs’。要选择求解器,您可能需要考虑以下方面:

  • 对于小型数据集,‘liblinear’是一个不错的选择,而‘sag’和‘saga’对于大型数据集更快;

  • 对于多类问题,只有‘newton-cg’、‘sag’, ‘saga’和‘lbfgs’处理多项式损失;

  • ‘liblinear’ 仅限于 one-versus-rest 方案。

警告

算法的选择取决于选择的惩罚: 求解器支持的惩罚:

  • ‘newton-cg’ - [‘l2’, ‘none’]

  • ‘lbfgs’ - [‘l2’, ‘none’]

  • ‘liblinear’ - [‘l1’, ‘l2’]

  • ‘sag’ - [‘l2’, ‘none’]

  • ‘saga’ - [‘elasticnet’, ‘l1’,‘l2’, ‘none’]

注意

‘sag’ 和 ‘saga’ 的快速收敛仅在具有大致相同规模的特征上得到保证。您可以使用 sklearn.preprocessing 中的缩放器预处理数据。

也可以看看

有关 LogisticRegression 的更多信息,尤其是 Table 汇总求解器/惩罚支持的信息,请参阅用户指南。

max_iter整数,默认=100

求解器收敛的最大迭代次数。

multi_class{‘auto’, ‘ovr’, ‘multinomial’},默认='自动'

如果选择的选项是‘ovr’,那么每个标签都适合一个二元问题。对于‘multinomial’,最小化的损失是整个概率分布的多项损失拟合,即使数据是二进制的。 ‘multinomial’ 在solver='liblinear' 时不可用。 ‘auto’ 如果数据是二进制的,或者如果solver='liblinear',则选择‘ovr’,否则选择‘multinomial’。

verbose整数,默认=0

对于 liblinear 和 lbfgs 求解器,将详细设置为任何正数以表示详细程度。

warm_start布尔,默认=假

当设置为 True 时,重用之前调用的解决方案作为初始化,否则,只需擦除之前的解决方案。对 liblinear 求解器无用。请参阅词汇表。

n_jobs整数,默认=无

如果multi_class='ovr'”,则在类上并行化时使用的 CPU 内核数。当solver 设置为‘liblinear’ 时忽略此参数,无论是否指定‘multi_class’。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关详细信息,请参阅词汇表。

l1_ratio浮点数,默认=无

Elastic-Net 混合参数,带有 0 <= l1_ratio <= 1 。仅在 penalty='elasticnet' 时使用。设置 l1_ratio=0 等效于使用 penalty='l2' ,而设置 l1_ratio=1 等效于使用 penalty='l1' 。对于 0 < l1_ratio <1 ,惩罚是 L1 和 L2 的组合。

属性

classes_ndarray 形状 (n_classes, )

分类器已知的类标签列表。

coef_ndarray 形状 (1, n_features) 或 (n_classes, n_features)

决策函数中特征的系数。

当给定问题是二进制时,coef_ 的形状为 (1, n_features)。特别是,当 multi_class='multinomial' 时,coef_ 对应于结果 1(真),而 -coef_ 对应于结果 0(假)。

intercept_形状为 (1,) 或 (n_classes,) 的 ndarray

拦截(又名偏差)添加到决策函数。

如果 fit_intercept 设置为 False,则截距设置为零。当给定问题是二进制时,intercept_ 的形状为 (1,)。特别是,当 multi_class='multinomial' 时,intercept_ 对应于结果 1(真),而 -intercept_ 对应于结果 0(假)。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

n_iter_ndarray 形状 (n_classes,) 或 (1, )

所有类的实际迭代次数。如果是二进制或多项式,则仅返回 1 个元素。对于 liblinear 求解器,仅给出所有类的最大迭代次数。

注意

底层 C 实现使用随机数生成器在拟合模型时选择特征。因此,对于相同的输入数据,结果略有不同的情况并不少见。如果发生这种情况,请尝试使用较小的 tol 参数。

在某些情况下,预测输出可能与独立 liblinear 的输出不匹配。请参阅叙述文档中与 liblinear 的区别。

参考

L-BFGS-B - 用于Large-scale Bound-constrained 优化的软件

Ciyou Zhu, Richard Byrd, Jorge Nocedal and Jose Luis Morales.http://users.iems.northwestern.edu/~nocedal/lbfgsb.html

LIBLINEAR - 大型线性分类库

https://www.csie.ntu.edu.tw/~cjlin/liblinear/

SAG - 马克·施密特、尼古拉斯·勒鲁和弗朗西斯·巴赫

使用随机平均梯度最小化有限和 https://hal.inria.fr/hal-00860051/document

SAGA - Defazio, A., Bach F. & Lacoste-Julien S. (2014)。

SAGA:支持非强凸复合目标的快速增量梯度方法https://arxiv.org/abs/1407.0202

Hsiang-Fu于,Fang-Lan黄,Chih-Jen林(2011)。双坐标下降

逻辑回归和最大熵模型的方法。机器学习 85(1-2):41-75。https://www.csie.ntu.edu.tw/~cjlin/papers/maxent_dual.pdf

例子

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
       [9.7...e-01, 2.8...e-02, ...e-08]])
>>> clf.score(X, y)
0.97...

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.linear_model.LogisticRegression。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。