本文简要介绍python语言中 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 Regression CV(又名 logit,MaxEnt)分类器。
请参阅交叉验证估计器的词汇表条目。
此类使用 liblinear,newton-cg,lbfgs 优化器的 sag 实现逻辑回归。 newton-cg、sag 和 lbfgs 求解器仅支持原始公式的 L2 正则化。 liblinear 求解器同时支持 L1 和 L2 正则化,对偶公式仅用于 L2 惩罚。 Elastic-Net 惩罚仅由 saga 求解器支持。
对于
Cs
值和l1_ratios
值的网格,最佳超参数由 cross-validatorStratifiedKFold
选择,但可以使用 cv 参数进行更改。 ‘newton-cg’、‘sag’, ‘saga’ 和 ‘lbfgs’ 求解器可以热启动系数(请参阅术语表)。在用户指南中阅读更多信息。
- Cs:int 或浮点数列表,默认=10
Cs 中的每个值都说明了正则化强度的倒数。如果 Cs 为 int,则 Cs 值的网格以 1e-4 和 1e4 之间的对数刻度选择。与支持向量机一样,较小的值指定更强的正则化。
- fit_intercept:布尔,默认=真
指定是否应将常数(也称为偏差或截距)添加到决策函数。
- cv:int 或交叉验证生成器,默认=None
使用的默认交叉验证生成器是 Stratified K-Folds。如果提供了一个整数,那么它就是使用的折叠数。有关可能的交叉验证对象的列表,请参阅模块
sklearn.model_selection
模块。- dual:布尔,默认=假
双重或原始配方。对偶公式仅适用于使用 liblinear 求解器的 l2 惩罚。当 n_samples > n_features 时首选 dual=False。
- penalty:{‘l1’, ‘l2’,‘elasticnet’},默认='l2'
指定惩罚的范数:
'l2'
: 添加 L2 惩罚项(默认使用);'l1'
: 添加 L1 惩罚项;'elasticnet'
:添加了 L1 和 L2 惩罚项。
警告
某些惩罚可能不适用于某些求解器。请参阅下面的参数
solver
,以了解惩罚和求解器之间的兼容性。- scoring:str 或可调用,默认=无
一个字符串(参见模型评估文档)或带有签名
scorer(estimator, X, y)
的记分器可调用对象/函数。有关可以使用的评分函数列表,请查看sklearn.metrics
。使用的默认评分选项是‘accuracy’。- solver:{'newton-cg',‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’},默认='lbfgs'
用于优化问题的算法。默认为‘lbfgs’。要选择求解器,您可能需要考虑以下方面:
对于小型数据集,‘liblinear’是一个不错的选择,而‘sag’和‘saga’对于大型数据集更快;
对于多类问题,只有‘newton-cg’、‘sag’, ‘saga’和‘lbfgs’处理多项式损失;
‘liblinear’ 在
LogisticRegressionCV
中可能会更慢,因为它不处理热启动。 ‘liblinear’ 仅限于one-versus-rest 方案。
警告
算法的选择取决于选择的惩罚:
‘newton-cg’ - [‘l2’]
‘lbfgs’ - [‘l2’]
‘liblinear’ - [‘l1’, ‘l2’]
‘sag’ - [‘l2’]
‘saga’ - [‘elasticnet’, ‘l1’,‘l2’]
注意
‘sag’ 和 ‘saga’ 的快速收敛仅在具有大致相同规模的特征上得到保证。您可以使用
sklearn.preprocessing
中的缩放器预处理数据。- tol:浮点数,默认=1e-4
停止标准的公差。
- max_iter:整数,默认=100
优化算法的最大迭代次数。
- class_weight:dict或‘balanced’,默认=无
与
{class_label: weight}
形式的类关联的权重。如果没有给出,所有的类都应该有一个权重。“balanced” 模式使用 y 的值自动调整与输入数据中的类频率成反比的权重,如
n_samples / (n_classes * np.bincount(y))
。请注意,如果指定了 sample_weight,这些权重将乘以 sample_weight(通过 fit 方法传递)。
- n_jobs:整数,默认=无
交叉验证循环期间使用的 CPU 内核数。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关详细信息,请参阅词汇表。- verbose:整数,默认=0
对于 ‘liblinear’, ‘sag’ 和 ‘lbfgs’ 求解器,将 verbose 设置为任何正数以表示详细程度。
- refit:布尔,默认=真
如果设置为 True,则将所有折叠的分数取平均值,并采用与最佳分数相对应的系数和 C,并使用这些参数进行最终调整。否则,对应于跨折叠的最佳分数的系数、截距和 C 被平均。
- 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。
- multi_class:{'自动,‘ovr’, ‘multinomial’},默认='自动'
如果选择的选项是‘ovr’,那么每个标签都适合一个二元问题。对于‘multinomial’,最小化的损失是整个概率分布的多项损失拟合,即使数据是二进制的。 ‘multinomial’ 在solver='liblinear' 时不可用。 ‘auto’ 如果数据是二进制的,或者如果solver='liblinear',则选择‘ovr’,否则选择‘multinomial’。
- random_state:int,RandomState 实例,默认=无
当
solver='sag'
、 ‘saga’ 或 ‘liblinear’ 打乱数据时使用。请注意,这仅适用于求解器,不适用于交叉验证生成器。详细信息请参见术语表。- l1_ratios:浮点数列表,默认=无
Elastic-Net 混合参数列表,带有
0 <= l1_ratio <= 1
。仅在penalty='elasticnet'
时使用。值 0 等效于使用penalty='l2'
,而 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)。- intercept_:形状为 (1,) 或 (n_classes,) 的 ndarray
拦截(又名偏差)添加到决策函数。
如果
fit_intercept
设置为 False,则截距设置为零。当问题是二进制时,intercept_
的形状为 (1,)。- Cs_:ndarray 形状 (n_cs)
C 数组,即用于交叉验证的正则化参数值的倒数。
- l1_ratios_:ndarray 形状 (n_l1_ratios)
用于交叉验证的 l1_ratio 数组。如果没有使用 l1_ratio(即惩罚不是‘elasticnet’),则设置为
[None]
- coefs_paths_:ndarray 形状 (n_folds, n_cs, n_features) 或 (n_folds, n_cs, n_features + 1)
dict 以类为键,在 cross-validating 期间获得的系数路径跨越每个折叠,然后在对相应的类执行 OvR 作为值之后跨越每个 Cs。如果‘multi_class’选项设置为‘multinomial’,那么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 之后,以类作为键,将值作为在 cross-validating 每次折叠期间获得的分数网格的字典。如果给定的‘multi_class’ 选项是‘multinomial’,那么在所有类中重复相同的分数,因为这是多项类。每个 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_
是 shape(n_classes,)。- l1_ratio_:ndarray 形状 (n_classes,) 或 (n_classes - 1,)
l1_ratio 数组,映射到每个类的最佳分数。如果 refit 设置为 False,那么对于每个类,最佳 l1_ratio 是对应于每个折叠的最佳分数的 l1_ratio 的平均值。当问题是二进制时,
l1_ratio_
是 shape(n_classes,)。- n_iter_:ndarray 形状 (n_classes, n_folds, n_cs) 或 (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)
。- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
例子:
>>> 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...
相关用法
- Python sklearn LogisticRegression用法及代码示例
- Python sklearn LocalOutlierFactor.kneighbors_graph用法及代码示例
- Python sklearn LocallyLinearEmbedding用法及代码示例
- Python sklearn LocalOutlierFactor.kneighbors用法及代码示例
- Python sklearn LocalOutlierFactor用法及代码示例
- Python sklearn LarsCV用法及代码示例
- Python sklearn Lars用法及代码示例
- Python sklearn LeavePOut用法及代码示例
- Python sklearn Lasso用法及代码示例
- Python sklearn LabelPropagation用法及代码示例
- Python sklearn LassoLars用法及代码示例
- Python sklearn LeaveOneOut用法及代码示例
- Python sklearn LassoLarsIC用法及代码示例
- Python sklearn LedoitWolf用法及代码示例
- Python sklearn LassoCV.path用法及代码示例
- Python sklearn LinearDiscriminantAnalysis用法及代码示例
- Python sklearn LassoCV用法及代码示例
- Python sklearn LabelSpreading用法及代码示例
- Python sklearn LabelEncoder用法及代码示例
- Python sklearn LinearRegression用法及代码示例
- Python sklearn LabelBinarizer用法及代码示例
- Python sklearn LinearSVR用法及代码示例
- Python sklearn LinearSVC用法及代码示例
- Python sklearn LassoLarsCV用法及代码示例
- Python sklearn LatentDirichletAllocation用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.linear_model.LogisticRegressionCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。