全网最清楚的---逻辑回归(Logistic Regression)
逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行。其中每一组数据都是由p 个指标构成。
目录
一、什么是逻辑回归?
1.个人理解
逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由p 个指标构成。
2.逻辑回归所处理的数据
逻辑回归是用来进行分类的,下面我将给出一个简单的例子来解释。
- 我们给出一个人的 [身高,体重] 这两个指标,然后判断这个人是属于”胖“还是”瘦“这一类。对于这个问题,我们可以先测量n个人的身高、体重以及对应的指标”胖“,"瘦”,把胖和瘦分别用0和1来表示,把这n组数据输入模型进行训练。训练之后再把待分类的一个人的身高、体重输入模型中,看这个人是属于“胖”还是“瘦”
- 如果数据是有两个指标,可以用平面的点来表示数据,其中一个指标为x轴,另一个为y轴;如果数据有三个指标,可以用空间中的点表示数据;如果是p维的话(p>3),就是p维空间中的点
2.1.引入sigomd函数
sigomd函数的作用:(Sigmoid 函数,也称为 Logistic 函数,是一个常用的激活函数,用于将输入映射到一个取值范围在0和1之间的输出。)
- 映射到概率值:逻辑回归的目标是预测样本属于某个类别的概率。通过 Sigmoid 函数,将线性回归模型的输出映射到0和1之间的概率值,方便进行分类判断。
-
可解释性:Sigmoid 函数的输出在0和1之间,可以被解释为样本属于某个类别的概率。例如,输出为0.8表示属于某个类别的概率为80%,输出为0.3表示属于该类别的概率为30%。
-
阈值确定:根据 Sigmoid 函数的输出概率,我们可以设定一个阈值(通常是0.5),将概率大于等于阈值的样本划分为一个类别,概率小于阈值的样本划分为另一个类别。
-
平滑性:Sigmoid 函数的输出具有平滑性质,梯度变化较为连续,有利于使用梯度下降等优化算法对模型参数进行更新和优化。
2.2.sigmoid函数公式
2.3.sigmoid函数图像
本质:将线性回归的结果映射到[0,1]区间上,实质上就是完成了二分类任务。
特点:
- 自变量为负无穷到正无穷
- 值域为[0,1]
3.引入梯度下降法
3.1.目的
梯度下降法在逻辑回归中起到了优化模型参数、寻找最优解、调节学习率和处理大规模数据的作用。它是逻辑回归模型中常用的优化算法之一,能够有效地提升模型的性能.
3.2梯度下降法的数学推导
详细内容点击可见(梯度下降法)
二、代码实现
1.目标
使用逻辑回归算法对鸢尾花数据集进行分类,并用散点图可视化了分类结果
2.代码文件获取
点击可下载使用:
3.详细代码
import pandas as pd
# 读取鸢尾花训练数据
train_data = pd.read_excel('鸢尾花训练数据.xlsx')
# 读取鸢尾花测试数据
test_data = pd.read_excel('鸢尾花测试数据.xlsx')
# 提取训练数据的特征列
train_X = train_data[['萼片长(cm)','萼片宽(cm)','花瓣长(cm)','花瓣宽(cm)']]
# 提取训练数据的目标列
train_Y = train_data[['类型_num']]
from sklearn.linear_model import LogisticRegression
# 创建逻辑回归模型
model = LogisticRegression()
# 使用训练数据拟合模型,即进行训练
model.fit(train_X, train_Y)
# 对训练数据进行预测
train_predictions = model.predict(train_X)
# 打印训练数据的预测结果
print(train_predictions)
import matplotlib.pyplot as plt
# 创建散点图,横坐标为训练数据的"萼片长(cm)",纵坐标为训练数据的"萼片宽(cm)",颜色由预测结果决定
plt.scatter(train_X['萼片长(cm)'], train_X['萼片宽(cm)'], c=train_predictions)
# 添加横坐标标签
plt.xlabel('萼片长(cm)')
# 添加纵坐标标签
plt.ylabel('萼片宽(cm)')
# 添加图表标题
plt.title('鸢尾花分类结果')
# 显示图表
plt.show()
3.运行结果图
三、逻辑回归的优缺点
1.优点
- 简单高效:逻辑回归模型相对简单,计算速度快,适用于处理大规模数据集。
- 可解释性强:逻辑回归可以提供概率预测结果,可以解释特征对预测结果的影响程度。
- 对稀疏数据友好:逻辑回归对于具有大量稀疏特征的数据集,表现较好。
- 适用性广泛:逻辑回归可以用于二分类问题,也可以通过扩展到多类别问题。
- 适用于线性可分问题:当样本数据近似线性可分时,逻辑回归模型能够取得较好的分类效果。
2.缺点
- 假设线性关系:逻辑回归是一种线性模型,假设特征和目标之间存在线性关系。当数据具有复杂的非线性关系时,逻辑回归可能表现较差。
- 对异常值敏感:逻辑回归对异常值较为敏感,特别是在特征空间较小的情况下,异常值可能对模型的性能产生较大影响。
- 高度依赖特征选择:逻辑回归的性能和特征选择密切相关。选择不好的特征可能导致模型欠拟合或过拟合。
- 无法处理非线性关系:逻辑回归本身是一种线性分类器,对于非线性关系的数据,逻辑回归模型无法很好地拟合。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)