后勤回归简历#

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='deprecated', random_state=None, l1_ratios=None)[源代码]#

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

请参阅术语表条目 cross-validation estimator .

此类使用liblinear、newton-cg、sag或lbfgs优化器实现逻辑回归。newton-cg、sag和lbfgs求解器仅支持具有原始公式的L2正规化。Liblinear求解器支持L1和L2正规化,仅针对L2罚分采用二元公式。Elastic-Net惩罚仅由传奇解决程序支持。

对于网格, Cs 价值观和 l1_ratios 值时,交叉验证器选择最佳超参数 StratifiedKFold ,但可以使用 cv 参数.“newton-cg”、“sag”、“saga”和“lbfgs”求解器可以热启动系数(请参阅 Glossary ).

阅读更多的 User Guide .

参数:
Csint或浮点数列表,默认=10

Cs中的每个值都描述了规则化强度的倒数。如果Cs为int,则以1 e-4和1 e4之间的对数标度选择Cs值的网格。与支持向量机一样,较小的值意味着更强的正规化。

fit_intercept布尔,默认=True

指定是否为常数(又名偏差或拦截)应添加到决策功能中。

cvint或交叉验证生成器,默认值=无

使用的默认交叉验证生成器是分层K折叠。如果提供了一个整数,那么它就是使用的折叠数。查看模块 sklearn.model_selection 可能的交叉验证对象列表的模块。

在 0.22 版本发生变更: cv 如果无从3倍更改为5倍,则默认值。

dual布尔,默认=假

双重(约束)或原始(正规化,另请参阅 this equation )配方。双公式仅针对具有Liblinear解算器的l2罚分实施。当n_samples > n_features时,首选dual=False。

penalty' l1 ',' elasticnet '},默认=' l2 '

明确处罚规范:

  • 'l2' :添加L2处罚条款(默认使用);

  • 'l1' :添加L1处罚条款;

  • 'elasticnet' :增加L1和L2处罚条款。

警告

Some penalties may not work with some solvers. See the parameter solver below, to know the compatibility between the penalty and solver.

scoring字符串或可调用,默认=无

字符串(请参阅 的 scoring 参数:定义模型评估规则 )或具有签名的记分器可调用对象/函数 scorer(estimator, X, y) .有关可以使用的评分函数列表,请查看 sklearn.metrics .使用的默认评分选项是“准确性”。

solver' lbfgs '、'、' newton-cg '、'、' sag '、'、'、' 默认=' lbfgs '

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

  • 对于小型数据集,“liblinear”是一个不错的选择,而“sag”和“saga”对于大型数据集来说速度更快;

  • 对于多类问题,除了“liblinear”之外的所有求解器都最小化了全部多项式损失;

  • 'liblinear' might be slower in LogisticRegressionCV because it does not handle warm-starting.

  • “liblinear”默认情况下只能处理二进制分类。要对多类设置应用one-versus-rest方案,可以使用 OneVsRestClassifier .

  • “newton-spoky”是一个不错的选择 n_samples >> n_features * n_classes ,尤其是具有罕见类别的一热编码类别特征。请注意,此求解器的内存使用具有二次依赖性 n_features * n_classes 因为它显式计算完整的海森矩阵。

警告

算法的选择取决于所选择的惩罚和(多项)多类支持:

求解器

处罚

多项多类

“lbfgs”

“l2”

是的

“自由线性”

“l1”、“l2”

没有

“newton-cg”

“l2”

是的

“牛顿-托基”

“l2”,

没有

“sag”

“l2”,

是的

“传奇”

“elasticnet”、“l1”、“l2”

是的

备注

“sag”和“saga”的快速收敛仅在规模大致相同的功能上才能保证。您可以使用来自的缩放器预处理数据 sklearn.preprocessing .

Added in version 0.17: 随机平均梯度下降解算器。

Added in version 0.19: SAGA求解器。

Added in version 1.2: 牛顿-不稳定的求解器。

tolfloat,默认= 1 e-4

停止标准的容忍度。

max_iterint,默认=100

优化算法的最大迭代次数。

class_weightdict或“balanced”,默认=无

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

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

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

Added in version 0.17: class_weight == 'balanced'

n_jobsint,默认=无

Number of CPU cores used during the cross-validation loop. None means 1 unless in a joblib.parallel_backend context. -1 means using all processors. See Glossary for more details.

verboseint,默认=0

对于“liblinar”、“sag”和“lbfgs”求解器将verbose设置为任何正值,以表示详细。

refit布尔,默认=True

如果设置为True,则对所有折叠的分数取平均值,并采用对应于最佳分数的系数和C,并使用这些参数进行最终改装。否则,对应于跨折叠的最佳分数的系数、截距和C被平均。

intercept_scalingfloat,默认=1

仅当使用求解器“liblinear”并且self.fit_intercept设置为True时才有用。在这种情况下,x变成 [x, self.intercept_scaling] ,即具有等于intercept_scaling的常数值的“合成”特征被附加到实例载体。拦截变成 intercept_scaling * synthetic_feature_weight .

注意!合成特征权重与所有其他特征一样经历l1/l2正规化。为了减轻规则化对合成特征权重(从而对拦截)的影响,必须增加intersection_scaling。

multi_class' Auto,' ovr ',','跨国公司'},默认='自动'

如果选择的选项是“ovr”,那么二进制问题适合每个标签。对于“多项”,最小化的损失是整个概率分布的多项损失, even when the data is binary .当求解器=“liblinear”时,“多项”不可用。如果数据是二进制的,或者如果solver =' liblinear ',则“Auto”选择“ovr”,否则选择“multomial”。

Added in version 0.18: “多项”情况的随机平均梯度下降求解器。

在 0.22 版本发生变更: 0.22中,默认值从“ovr”更改为“Auto”。

自 1.5 版本弃用: multi_class 在1.5版中已被弃用,并将在1.7版中删除。从那时起,推荐的“多项”将始终用于 n_classes >= 3 .不支持“多项”的求解器将引发错误。使用 sklearn.multiclass.OneVsRestClassifier(LogisticRegressionCV()) 如果你还想使用OVR。

random_stateint,RandomState实例,默认=无

时使用 solver='sag' 、“saga”或“liblinear”来洗牌数据。请注意,这仅适用于求解器,而不适用于交叉验证生成器。看到 Glossary 有关详细信息

l1_ratios浮动列表,默认=无

Elastic-Net混合参数列表,带有 0 <= l1_ratio <= 1 .仅在以下情况下使用 penalty='elasticnet' .值为0相当于使用 penalty='l2' ,而1相当于使用 penalty='l1' .为 0 < l1_ratio <1 ,点球是L1和L2的组合。

属性:
classes_形状的nd数组(n_classes,)

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

coef_形状的nd数组(1,n_features)或(n_classes,n_features)

决策函数中特征的系数。

coef_ 当给定问题是二元问题时,形状为(1,n_features)。

intercept_形状为(1,)或(n_classes,)的nd数组

拦截(又名偏差)添加到决策功能中。

If fit_intercept is set to False, the intercept is set to zero. intercept_ is of shape(1,) when the problem is binary.

Cs_形状的nd数组(n_cs)

C数组,即用于交叉验证的正规化参数值的倒数。

l1_ratios_形状的ndarray(n_l1_ratios)

用于交叉验证的l1_ratio数组。如果未使用l1_ratio(即惩罚不是“elasticnet”),则将其设置为 [None]

coefs_paths_nd形状数组(n_folds,n_cs,n_features)或 (n_folds,n_cs,n_features + 1)

以类作为密钥,以及在对相应类进行OvR后跨每个折叠交叉验证期间获得的系数路径作为值。如果“multi_Class”选项设置为“multomial”,则coefs_paths是与每个类别对应的系数。每个Dict值都有形状 (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”选项是“多项”,那么所有类中都会重复相同的分数,因为这是多项类。每个Dict值都有形状 (n_folds, n_cs)(n_folds, n_cs, n_l1_ratios) 如果 penalty='elasticnet' .

C_形状的ndarray(n_classes,)或(n_classes - 1,)

映射到每个班级的最佳分数的C数组。如果refit设置为False,那么对于每个类别,最佳C是与每个折叠的最佳分数相对应的C的平均值。 C_ 当问题是二元问题时,形状为(n_classes,)。

l1_ratio_形状的ndarray(n_classes,)或(n_classes - 1,)

l1_ratio数组,映射到每个班级的最佳分数。如果refit设置为False,那么对于每个类别,最佳l1_ratio是与每个折叠的最佳分数相对应的l1_ratio的平均值。 l1_ratio_ 当问题是二元问题时,形状为(n_classes,)。

n_iter_形状的nd数组(n_classes,n_folds,n_cs)或(1,n_folds,n_cs)

所有类、折叠和C的实际迭代次数。在二元或多项情况下,第一维度等于1。如果 penalty='elasticnet' ,形状是 (n_classes, n_folds, n_cs, n_l1_ratios)(1, n_folds, n_cs, n_l1_ratios) .

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

LogisticRegression

无需调整超参数的逻辑回归 C .

示例

>>> 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(X)[源代码]#

预测样本的置信度分数。

样本的置信度分数与该样本到超平面的带符号距离成正比。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

我们想要获取其置信度分数的数据矩阵。

返回:
scores形状的ndarray(n_samples,)或(n_samples,n_classes)

信心分数 (n_samples, n_classes) 组合.在二元情况下,置信度得分 self.classes_[1] 其中>0意味着这个类将被预测。

densify()[源代码]#

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

转换 coef_ member(back)to a numpy.ndarray.这是 coef_ 并且是装配所需的,因此仅需要对之前已精简的模型调用此方法;否则,这是不操作的。

返回:
自我

拟合估计量。

fit(X, y, sample_weight=None, **params)[源代码]#

根据给定的训练数据对模型进行匹配。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

y形状类似阵列(n_samples,)

相对于X的目标载体。

sample_weightarray-like of shape(n_samples,)default=None

分配给各个样本的权重数组。如果未提供,则给予每个样本单位重量。

**paramsdict

要传递给基础拆分器和记分器的参数。

Added in version 1.4.

返回:
self对象

适合LogisticRegressionCV估计器。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

Added in version 1.4.

返回:
routingMetadataRouter

A MetadataRouter 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

predict(X)[源代码]#

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

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

我们想要获取预测的数据矩阵。

返回:
y_pred形状的nd数组(n_samples,)

包含每个样本的类标签的载体。

predict_log_proba(X)[源代码]#

预测概率估计的对数。

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

参数:
X形状类似阵列(n_samples,n_features)

要评分的向量,其中 n_samples 是样本数量和 n_features 是功能的数量。

返回:
T形状类似阵列(n_samples,n_classes)

返回模型中每个类的样本的log概率,其中类按其所在位置排序 self.classes_ .

predict_proba(X)[源代码]#

概率估计。

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

对于多_类问题,如果multi_类设置为“多项”,则使用softmax函数来查找每个类的预测概率。否则使用一对休息的方法,即使用逻辑函数计算每个类别的概率,假设它为正,并在所有类别中对这些值进行标准化。

参数:
X形状类似阵列(n_samples,n_features)

要评分的向量,其中 n_samples 是样本数量和 n_features 是功能的数量。

返回:
T形状类似阵列(n_samples,n_classes)

返回模型中每个类的样本概率,其中类按其所在位置排序 self.classes_ .

score(X, y, sample_weight=None, **score_params)[源代码]#

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

参数:
X形状类似阵列(n_samples,n_features)

测试样本。

y形状类似阵列(n_samples,)

真正的标签X。

sample_weight形状类似数组(n_samples,),默认=无

样本重量。

**score_paramsdict

要传递给 score 潜在得分者的方法。

Added in version 1.4.

返回:
score浮子

自我评分。预测(X)w.rt. y.

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LogisticRegressionCV[源代码]#

请求元数据传递给 fit

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 fit 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 fit .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 fit .

返回:
self对象

更新的对象。

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LogisticRegressionCV[源代码]#

请求元数据传递给 score

请注意,此方法仅适用于以下情况 enable_metadata_routing=True (见 sklearn.set_config ).请参阅 User Guide 关于路由机制如何工作。

The options for each parameter are:

  • True :元数据被请求并传递给 score 如果提供的话。如果未提供元数据,则会忽略请求。

  • False :未请求元数据,元估计器不会将其传递给 score .

  • None :不请求元数据,如果用户提供元估计器,则元估计器将引发错误。

  • str :元数据应通过此给定别名而不是原始名称传递给元估计器。

默认 (sklearn.utils.metadata_routing.UNCHANGED )保留现有请求。这允许您更改某些参数的请求,而不是其他参数。

Added in version 1.3.

备注

只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在 Pipeline .否则就没有效果了。

参数:
sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged

元数据路由 sample_weight 参数 score .

返回:
self对象

更新的对象。

sparsify()[源代码]#

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

转换 coef_ scipy.sparse矩阵的成员,对于L1正规化模型,该矩阵比通常的numpy. ndray表示具有更高的内存和存储效率。

intercept_ 成员未转换。

返回:
自我

拟合估计量。

注意到

对于非稀疏模型,即当零不多时 coef_ ,这实际上可能 increase 内存使用情况,因此请谨慎使用此方法。经验法则是零元素的数量,可以用 (coef_ == 0).sum() ,必须超过50%才能提供显着的好处。

调用此方法后,使用partial_fit方法(如果有的话)的进一步匹配将无法工作,直到调用denssify。