sklearn 线性回归_机器学习 | 逻辑回归算法(二)LogisticRegression

文章机器学习 | 逻辑回归算法(一)理论中详细介绍了逻辑回归理论知识。

逻辑回归是一种广义线性回归模型,是Sigmoid函数归一化后的线性回归模型,常用来解决二元分类问题,可解释性强。它假设数据服从伯努利分布,通过梯度下降法对其损失函数(极大似然函数)求解,以达到数据二分类的目的。

逻辑回归不要求自变量和因变量是线性关系。它可以处理各种类型的关系,因为它对预测的相对风险指数或使用了一个非线性的转换。它广泛的用于分类问题。

基本原理是其函数表达式为对数几率函数,通过Sigmoid函数将线性回归方程转化,将任何实数映射到(0,1)之间

优化目标是通过观测样本的极大似然估计值来选择参数。

损失函数表征模型预测值与真实值的不一致程度。LR损失函数为负的对数损失函数。逻辑回归,假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值最小化负的似然函数。应用极大似然估计法估计模型参数,从而得到逻辑回归模型。逻辑回归的损失函数求最小值,就是根据最大似然估计的方法来的。并使用梯度下降法求解损失函数。

sklearn中逻辑回归

Sklearn中逻辑回归相关的类 说明
linear_model.LogisticRegression 逻辑回归分类器(又叫logit回归,最大熵分类器)
linear_model.LogisticRegressionCV 带交叉验证的逻辑回归分类器
linear_model.logistic_regression_path 计算Logistic回归模型以获得正则化参数的列表
linear_model.SGDClassifier 利用梯度下降求解的线性分类器(SVM,逻辑回归等等)
linear_model.SGDRegressor 利用梯度下降最小化正则化后的损失函数的线性回归模型
metrics.log_loss 对数损失,又称逻辑损失或交叉熵损失

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=’warn’, max_iter=100, multi_class=’warn’, verbose=0, warm_start=False, n_jobs=None)

逻辑回归的损失函数

正则化参数penalty & C


penalty: {‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’

可以输入"l1""l2"来指定使用哪一种正则化方式,不填写默认"l2"。注意,若选择"l1"正则化,参数solver仅能够使用求解方式 "liblinear" 和 "saga",若使用"l2"正则 化,参数solver中所有的求解方式都可以使用。


C: float, default=1.0

C正则化强度的倒数,必须是一个大于0的浮点数,不填写默认1.0,即默认正则项与损失函数的比值是1:1。C越小,损失函数会越小,模型对损失函数的惩罚越重,正则化的效力越强,参数  会逐渐被压缩得越来越小。


正则化是用来防止模型过拟合的过程,常用的有L1正则化L2正则化两种选项,分别通过在损失函数后加上参数向量  的L1范式和L2范式的倍数来实现。

sklearn 中的带L1正则化的损失函数

L2正则化

其中  是损失函数,C是用来控制正则化程度的超参数,n是方程中特征的总数,也是方程中参数的总数,i代表每个参数,且  是因为我们的参数向量中,第一个参数是 ,为截距,它通常是不参与正则化的。

L1正则化L2正则化虽然都可以控制过拟合,但它们的效果并不相同。当正则化强度逐渐增大(即C逐渐变小), 参数  的取值会逐渐变小,但L1正则化会将参数压缩为0,L2正则化只会让参数尽量小,不会取到0。

>>> from sklearn.linear_model import LogisticRegression as LR
>>> from sklearn.datasets import load_breast_cancer
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.metrics import accuracy_score
>>> data = load_breast_cancer()
>>> X = data.data
>>> y = data.target
>>> LRL1 = LR(penalty="l1",solver="liblinear",
              C
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值