sklearn.linear_model.LogisticRegressionCV

class sklearn.linear_model.LogisticRegressionCV(*, Cs=10, fit_intercept=True, cv=None, dual=False, penalty='l2', scoring=None, solver='lbfgs', tol=0.0001, max_iter=100, class_weight=None, n_jobs=None, verbose=0, refit=True, intercept_scaling=1.0, multi_class='auto', random_state=None, l1_ratios=None)

[源码]

Logistic回归CV(又名logit,MaxEnt)分类器。

有关交叉验证估算器,请参阅词汇表条目。

此类使用liblinear,newton-cg,sag,lbfgs优化器实现逻辑回归。newton-cg, sag 和lbfgs求解器仅支持具有原始公式的L2正则化。liblinear求解器支持L1和L2正则化,仅对L2惩罚采用对偶公式。saga求解器仅支持Elastic-Net惩罚。

对于Cs值和l1_ratios值的网格,最好由交叉验证器StratifiedKFold选择最佳超参数 ,但可以使用cv参数进行更改。'newton-cg','sag','saga'和'lbfgs'求解器可以对系数进行热启动(请参阅词汇表)。

用户指南中阅读更多内容。

参数 说明
Cs int or list of floats, default=10
Cs中的每个值都表示了正则强度的倒数。如果Cs作为整数,则以1e-4和1e4之间的对数比例选择Cs值的网格。与支持向量机一样,较小的值指定更强的正则化。
fit_intercept bool, default=True
是否将常量(aka偏置或截距)添加到决策函数。
cv int or cross-validation generator, default=None
使用的默认交叉验证生成器是“分层K折”。如果提供整数,则为使用的折数。可能的交叉验证对象的列表,请参见sklearn.model_selection模块。

在版本0.22中更改:cv如果为“None”,则默认值从3倍更改为5倍。
dual bool, default=False
是否对偶化。仅对liblinear求解器使用L2惩罚时进行对偶化。当n_samples> n_features时,首选dual = False。
penalty {‘l1’, ‘l2’, ‘elasticnet’}, default=’l2’
用于指定处罚中使用的规范。'newton-cg','sag'和'lbfgs'求解器仅支持L2惩罚。仅“ saga”求解器支持“ elasticnet”。
scoring str or callable, default=None
字符串(请参阅模型评估文档)或具有scorer(estimator, X, y)签名的评分器可调用对象或函数 。有关可以使用的评分功能的列表,请参见sklearn.metrics。使用的默认评分选项是“准确度”。
solver {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’
用于优化问题的算法。

对于小型数据集,“ liblinear”是一个不错的选择,而对于大型数据集,“ sag”和“ saga”更快。
- 对于多类分类问题,只有'newton-cg' ,'sag','saga' 和 'lbfgs' 处理多项式损失。“ liblinear”仅限于“一站式”计划。
- 'newton-cg','lbfgs'和'sag'仅处理L2惩罚,而'liblinear' 和'saga'处理L1惩罚。
- 'liblinear'在LogisticRegressionCV中可能较慢,因为它不处理热启动。

请注意,只有在比例大致相同的要素上才能保证“ sag”和“ saga”快速收敛。你可以使用sklearn.preprocessing中的缩放器对数据进行预处理。

版本0.17中的新功能:随机平均梯度下降求解器。

0.19版中的新功能: SAGA求解器。
tol float, default=1e-4
停止标准的容差。
max_iter int, default=100
优化算法的最大迭代次数。
class_weight dict or ‘balanced’, default=None
{class_label: weight}的形式与类别关联的权重。如果没有给出,所有类别的权重都应该是1。

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

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

*0.17版中的新功能:*class_weight ='balanced'
n_jobs int, default=None
交叉验证循环中使用的CPU内核数。除非设置了joblib.parallel_backend 参数,否则None表示1 。 -1表示使用所有处理器。有关更多详细信息,请参见词汇表
verbose int, default=0
对于liblinear,sag和lbfgs求解器,将verbose设置为任何正数以表示输出日志的详细程度。求解器,将verbose设置为任何正数以表示输出日志的详细程度。
refit ool, default=True
如果设置为“True”,则将所有折叠的分数平均,并获取最佳分数对应的系数和C,并使用这些参数进行最终的调整。否则,折叠的最佳分数对应的系数,截距和C取平均值。
intercept_scaling float, default=1
仅在使用求解器“ liblinear”并将self.fit_intercept设置为True时有用。在这种情况下,x变为[x,self.intercept_scaling],即将常量值等于intercept_scaling的“合成”特征附加到实例矢量。截距变为intercept_scaling * synthetic_feature_weight

注意!与所有其他特征一样,合成特征权重也要经过L1 / L2正则化。为了减轻正则化对合成特征权重(以及因此对截距)的影响,必须增加intercept_scaling。
multi_class {‘auto, ‘ovr’, ‘multinomial’}, default=’auto’
如果选择的选项是“ ovr”,则每个标签都看做二分类问题。对于“multinomial”,即使数据是二分类的,损失最小是多项式损失拟合整个概率分布。当solver ='liblinear' 时, 'multinomial' 不可用。如果数据是二分类的,或者如果Solver ='liblinear',则'auto'选择'ovr',否则选择'multinomial'。

*版本0.18中的新功能:*用于“多项式”情况的随机平均梯度下降求解器。

*在版本0.22中更改:在版本0.22中,*默认值从'ovr'更改为'auto'。
random_state int, RandomState instance, default=None
solver='sag','saga'或'liblinear'时,用于随机整理数据。有关详细信息,请参见词汇表
l1_ratios list of float, default=None
Elastic-Net混合参数列表,取值范围0 <= l1_ratio <= 1。仅在penalty='elasticnet'时使用。取值为0等同于使用penalty='l2',而取值为1等同于使用penalty='l1'。对于0 < l1_ratio <1,惩罚是L1和L2的组合。
属性 说明
classes_ ndarray of shape (n_classes, )
分类器已知的类别标签列表。
coef_ ndarray of shape (1, n_features) or (n_classes, n_features)
决策函数中特征的系数。

coef_ 当给定问题为二分类时,其形状为(1,n_features)。
intercept_ ndarray of shape (1,) or (n_classes,)
添加到决策函数的截距(也称为偏差)。

如果fit_intercept设置为False,则截距设置为零。 intercept_当给定问题为二分类时,其形状为(1,)。
Cs_ ndarray of shape (n_cs)
C参数(即用于交叉验证的正则化参数值的倒数)列表。
l1_ratios_ ndarray of shape (n_l1_ratios)
用于交叉验证的l1_ratios数组。如果不使用l1_ratio(即惩罚不是“ elasticnet”),则将其设置为[None]
coefs_paths_ ndarray of shape (n_folds, n_cs, n_features) or (n_folds, n_cs, n_features + 1)
dict以类为键,对相应的类进行OvR后,在交叉验证过程中通过每折中每个Cs得到的组合为值。如果将“ multi_class”选项设置为“ multinomial”,则coefs_paths是与每个类别相对应的系数。每个字典值都具有(n_folds, n_cs, n_features)(n_folds, n_cs, n_features + 1) 的形状,这取决于模型是否拟合了截距。如果penalty='elasticnet',,则形状为(n_folds, n_cs, n_l1_ratios_, n_features)(n_folds, n_cs, n_l1_ratios_, n_features + 1)
scores_ dict
在对相应类别进行OvR之后,将类别作为键,将值作为交叉验证每次折叠时获得的分数网格。如果给出的“ multi_class”选项为“multinomial”,则在所有类别中重复相同的分数,因为这是多项类。如果penalty='elasticnet',每个dict值的形状为 (n_folds, n_cs(n_folds, n_cs, n_l1_ratios)
C_ ndarray of shape (n_classes,) or (n_classes - 1,)
C的数组,映射到每个类的最好分数。如果refit被设置为False,那么对于每个类,最佳的C是对应于每个折叠的最好分数的C的平均值。当问题是二分类时,C_的形状为(n_classes,)。
l1_ratio_ ndarray of shape (n_classes,) or (n_classes - 1,)
l1_ratio数组,它映射到每个类的最高分数。如果将refit设置为False,则对于每个类别,最佳的l1_ratio对应与每个折叠的最佳分数的l1_ratio的平均值。问题为二分类时,l1_ratio_的形状为(n_classes,)。
n_iter_ ndarray of shape (n_classes, n_folds, n_cs) or (1, n_folds, n_cs)
所有类别、折叠和Cs的实际迭代次数。在二项或多项情况下,第一维是1。如果penalty='elasticnet',形状为(n_classes, n_folds, n_cs, n_l1_ratios)(1, n_folds, n_cs, n_l1_ratios).

另见

LogisticRegression

示例

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegressionCV
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegressionCV(cv=5, random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([00])
>>> clf.predict_proba(X[:2, :]).shape
(23)
>>> clf.score(X, y)
0.98...

方法

方法 说明
decision_function(self, X) 预测样本的置信度得分。
densify(self) 将系数矩阵转换为密集数组格式。
fit(self, X, y[, sample_weight]) 根据给定的训练数据拟合模型。
get_params(self[, deep]) 获取此估计器的参数。
predict(self, X) 预测X中样本的类别标签。
predict_log_proba(self, X) 预测概率估计的对数。
predict_proba(self, X) 概率估计。
score(self, X, y[, sample_weight]) 使用给定测试数据和标签上的scoring选项返回分数。
set_params(self, **params) 设置此估计器的参数。
sparsify(self) 将系数矩阵转换为稀疏格式。
__init__(self, *, Cs=10, fit_intercept=True, cv=None, dual=False, penalty='l2', scoring=None, solver='lbfgs', tol=0.0001, max_iter=100, class_weight=None, n_jobs=None, verbose=0, refit=True, intercept_scaling=1.0, multi_class='auto', random_state=None, l1_ratios=None)

[源码]

初始化self, 请参阅help(type(self))以获得准确的说明。

decision_function(self, X)

[源码]

预测样本的置信度得分。

样本的置信度分数是该样本到超平面的符号距离。

参数 说明
X array_like or sparse matrix, shape (n_samples, n_features)
样本数据。
返回值 说明
array, shape=(n_samples,) if n_classes == 2 else (n_samples, n_classes)
每个(样本,类别)组合的置信度得分。在二进制情况下,self.classes_ [1]的置信度得分> 0表示将预测该类。
densify(self)

[源码]

将系数矩阵转换为密集数组格式。

coef_数值(返回)转换为numpy.ndarray。这是coef_的默认格式,并且是拟合模型所需的格式,因此仅在之前被稀疏化的模型上才需要调用此方法。否则,它是无操作的。

返回值 说明
self 拟合估计器。
fit(self,X,y,sample_weight = None )

[源码]

根据给定的训练数据拟合模型。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
训练数据,其中n_samples是样本数,n_features是特征数。
y array-like of shape (n_samples,)
对应于X的目标向量。
sample_weight array-like of shape (n_samples,) default=None
分配给各个样本的权重数组。如果未设置,则为每个样本的权重都为1。
返回值 说明
self object
get_params(self,deep = True )

[源码]

获取此估计器的参数。

参数 说明
deep bool, default=True
如果为True,返回此估计器和所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
predict(self, X)

[源码]

预测X中样本的类别标签。

参数 说明
X array_like or sparse matrix, shape (n_samples, n_features)
样本数据
返回值 说明
C array, shape [n_samples]
每个样本的预测类别标签。
predict_log_proba(self, X)

[源码]

预测概率估计的对数。

返回按类别标签排序的所有类别的估计值。

参数 说明
X array-like of shape (n_samples, n_features)
要预测的数据,其中n_samples是样本数, n_features是特征数。
返回值 说明
T array-like of shape (n_samples, n_classes)
返回模型中每个类别的样本的对数概率,类按self.classes_中的顺序排序。
predict_proba(self, X)

[源码]

概率估计。

返回按类别标签排序的所有类别的估计值。

对于multi_class问题,如果将multi_class设置为“multinomial”,则使用softmax函数查找每个类别的预测概率。否则使用one vs-rest方法,即使用logistic函数计算每个类别为正的概率。并在所有类别中标准化这些值。

参数 说明
X array-like of shape (n_samples, n_features)
要预测的数据,其中n_samples是样本数, n_features是特征数。
返回值 说明
T array-like of shape (n_samples, n_classes)
返回模型中每个类别的样本概率,按self.classes_中的类别顺序排序。
score(self, X, y, sample_weight=None)

[源码]

使用给定测试数据和标签上的scoring选项返回分数。

参数 说明
X array-like of shape (n_samples, n_features)
测试样本。
y array-like of shape (n_samples,) or (n_samples, n_outputs)
X的真实标签。
sample_weight array-like of shape (n_samples,), default=None
样本权重。
返回值 说明
score float
预测标签与真实标签的平均准确度
set_params(self, **params)

[源码]

设置此估算器的参数。

该方法适用于简单的估计器以及嵌套对象(例如管道)。后者具有形式参数 <component>__<parameter>,以便可以更新嵌套对象的每个组件。

参数 说明
**params dict
估计器参数。
返回值 说明
self object
估计器实例。
sparsify(self)

[源码]

将系数矩阵转换为稀疏格式。

coef_数值转换为scipy.sparse矩阵,对于L1正规化的模型,该矩阵比通常的numpy.ndarray具有更高的内存和存储效率。

intercept_数值未转换。

返回值 说明
self 拟合估计器。

对于非稀疏模型,即当coef_中零的个数不多时,这实际上可能会增加内存使用量,因此请谨慎使用此方法。经验法则是,可以使用(coef_ == 0).sum()计算得到的零元素的数量必须大于50%,这时的效果是显着的。

在调用densify之前,调用此方法将无法进一步使用partial_fit方法(如果有)。