Python 逻辑回归

本文介绍了逻辑斯蒂回归的概念,包括Odds、Logit函数和Sigmoid曲线。通过示例展示了逻辑回归如何用于二分类及多分类问题,如One-vs-Rest和Multinomial Logistic Regression。并提供了使用Python的sklearn库实现逻辑回归的代码。

                                Python 逻辑(斯蒂)回归

1 声明

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

2 逻辑斯蒂回归简介

相关概念见下:

某个事件发生的概率定义为P,P的范围是[0,1]

Odds = 一个事件发生的概率/不发生的概率 = 

针对P不等于0和1的情况,我们会发现P趋于“极小”时(即无限接近0)时odds仍无限趋向于0;P趋于“极大”时(即无限接近1)时odds趋向于+∞,即Odds的变化范围由[0, ∞]。

Logit 可以粗暴的理解为Log “it”(Odds),优势(胜率),当它大于1时成功比失败的概率大。所以有 Logit = ln(Odds)=ln(P/(1-P)),这里不难发现对Odds取对数后其变化范围由 [0, ∞]变换为[-∞, ∞]与X的范围一致。

这时我们就可以建立X和Logit(“y”)的线性关系,而不能直接建立X与P(区间是0,1)的线性关系,因为二者的范围不一致。

进而我们得到如下形式:

这里 是第i个观测的目标变量 是1的概率,它的范围是[0,1]。 是训练数据, 模型学习到的参数。一般我们设个阀值为0.5,大于0.5则目标变量的类是1,反之为0。

逻辑斯蒂(又称Sigmoid) 是一个S形曲线的数学函数,它的值域是[0,1]

尽管有回归这个名词,但逻辑回归其实是个应用广泛的二分类算法。

针对多分类的情况可以通过one vs restMLR解决:

one vs rest(一对剩余)

一种应用在二分类之上的多分类的思想,如果有n个多分类,则可以分出 种即n种二分类(对应n个特征),这个n个二分类应用逻辑回归的思路计算各个特征对应分类的概率,设置个阀值,取概率最大的特征所在的类为最终类。这里假设特征间相互独立。

one vs one(一对一)

同理这里的一对一思路类似one vs rest,只不过这里的粒度是单特征,会有 种情况。这里先对每个二分类取出分类值,综合所有情况“投票”(即统计出分类值最多)出最终类。

multinomial logistic regression (MLR)

该方法的逻辑斯蒂(回归分类函数)用下图的softmax函数。Softmax函数把输出映射成区间在(0,1)的值,并且做了归一化,所有元素的和累加起来等于1。所以可以直接当作概率对待,选取概率最大的分类作为预测的目标。

这里 是第i个观测的目标值的概率, 对应多分类k,K是所有分类的总和(即多少种分类)。

3 逻辑回归代码与注释示例

# 加载包
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
# 加载鸢尾花数据
iris = datasets.load_iris()
features = iris.data
target = iris.target
# 标准化数据
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)
# 创建平通逻辑回归(二分类),注意数据集须是仅有两个的情况
#logistic_regression = LogisticRegression(random_state=0)
# 创建one-vs-rest ovr类型的逻辑回归(多分类),multinomial logistic regressiond的参数是multinomial
logistic_regression = LogisticRegression(random_state=0, multi_class="ovr")
# 训练模型
model = logistic_regression.fit(features_standardized, target)

4 总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShenLiang2025

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值