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) . |
另见
示例
>>> 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([0, 0])
>>> clf.predict_proba(X[:2, :]).shape
(2, 3)
>>> 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方法(如果有)。