Loading [MathJax]/jax/output/CommonHTML/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >算法入门(六)—— 一文搞懂逻辑回归(内附Kaggle实战源码与数据集)

算法入门(六)—— 一文搞懂逻辑回归(内附Kaggle实战源码与数据集)

作者头像
万事可爱^
发布于 2025-01-23 11:04:18
发布于 2025-01-23 11:04:18
22700
代码可运行
举报
运行总次数:0
代码可运行

大家好!欢迎来到我们的“算法入门”系列。今天我们要聊聊机器学习中的一位“老朋友”——逻辑回归。如果你对它的名字感觉既熟悉又陌生,别担心,今天我们会带你一起深入了解它的原理、公式以及在实践中的应用。最重要的是,我们会通过一个Kaggle实战项目,让你能够轻松上手!

准备好了吗?让我们一起开始这段学习之旅吧!

1. 逻辑回归概述

逻辑回归,听起来像回归分析的“亲戚”,但实际上它是一种分类算法。嗯,确实很让人困惑!线性回归是用来预测一个连续变量的数值,而逻辑回归虽然名字里有“回归”,但实际上它是用来做二分类(或者多分类)问题的算法,比如判断某个邮件是否为垃圾邮件,某个图片里是不是猫,等等。

1.1 线性回归与逻辑回归的关系

想象一下,我们用线性回归来做分类问题,假设我们有两个类别:类别 0 和类别 1。在标准的线性回归中,我们直接预测一个数值,而这个数值是无限的,可以正数、负数。

但是,如果我们直接用线性回归来做分类预测,那结果就会出现问题。例如,预测的值可能是 -10,也可能是 100,这样的结果对分类来说完全没有意义。我们更关心的是类别的概率值,0 到 1 之间的一个概率值。

逻辑回归的核心思想就是:将线性回归的预测结果(一个任意实数)通过一个Sigmoid函数(逻辑函数)转化为一个概率值,进而做分类。

1.2 Sigmoid函数的引入

Sigmoid函数是一个S型曲线,数学表达式为:

会趋近于 0。因此,它的输出总是在 0 到 1 之间,非常适合用来表示概率。

Sigmoid函数在神经网络中也很常见,其图形形状如下图所示:

在这里插入图片描述
在这里插入图片描述

那么,逻辑回归的最终输出就可以通过如下公式得到:

其中,

是输入特征,

是模型参数(权重),

是偏置项,

是预测的概率值。

2. 对数似然损失函数与梯度下降优化

逻辑回归的目标是训练出一组模型参数 ( w ) 和 ( b ),使得模型的预测概率与真实标签的差异最小。

2.1 对数似然损失函数

为了量化预测与真实标签之间的差异,我们使用对数似然损失函数(Log-Loss),它的形式如下:

其中:

是第( i )个样本的真实标签(0 或 1)

是模型预测的概率。

这个损失函数的意义是:我们希望模型能够预测出接近 1 或接近 0 的概率值。如果某个样本的真实标签是 1,预测值越接近 1,损失就越小;如果预测值越接近 0,则损失越大。

2.2 梯度下降优化

为了最小化损失函数,我们需要使用梯度下降算法来优化模型参数。梯度下降的核心思想是:通过计算损失函数对参数的偏导数(梯度),来调整参数

,使得损失函数逐渐减小,直到收敛到最优解。

梯度下降的更新公式如下:

其中,

是学习率,控制每一步更新的步长。

3. 多分类逻辑回归(One-vs-Rest)

在实际问题中,我们通常面对的不只是二分类问题,还需要处理多分类问题。幸运的是,逻辑回归也能应对这种情况。

3.1 One-vs-Rest(OvR)策略

处理多分类问题时,最常见的一种方法是One-vs-Rest(也叫 One-vs-All)。这种策略的思路是:对于每一个类别,我们训练一个二分类模型,判断样本是否属于该类别。最终,分类的结果就是选择预测概率最大的那个类别。

例如,假设我们有 3 个类别:A、B、C,那么我们分别训练三个二分类模型:

  • 模型 1:判断样本是否属于类别 A。
  • 模型 2:判断样本是否属于类别 B。
  • 模型 3:判断样本是否属于类别 C。

对于一个新的样本,我们将三个模型的预测结果进行比较,选择概率最大的类别作为最终的分类结果。

4. Kaggle实战:使用逻辑回归解决泰坦尼克号生存预测问题

现在,大家已经对逻辑回归有了一个清晰的理解。接下来,我们来动手做一个简单的Kaggle实战项目,通过逻辑回归来预测泰坦尼克号乘客的生存情况。

4.1 数据集介绍

我们将使用Kaggle上的“泰坦尼克号:机器学习生死预测”数据集。该数据集包含了泰坦尼克号上乘客的基本信息(如年龄、性别、票价等),我们需要预测每个乘客是否生还(Survived)。

4.2 数据预处理

首先,我们需要导入一些库,并加载数据集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, roc_curve, auc
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 加载数据集
train_data=pd.read_csv('/kaggle/input/titanic/train.csv')
train_data.head()
在这里插入图片描述
在这里插入图片描述

接下来,我们对数据进行预处理。泰坦尼克号数据集包含了缺失值,我们需要处理这些缺失值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 填充缺失值
data['Age'].fillna(data['Age'].mean(), inplace=True)
data['Embarked'].fillna(data['Embarked'].mode()[0], inplace=True)

# 选择特征列
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']

# 将类别变量(如 Sex 和 Embarked)转换为数值型
data['Sex'] = data['Sex'].map({'male': 0, 'female': 1})
data = pd.get_dummies(data, columns=['Embarked'], drop_first=True)

# 选择特征和标签
X = data[features]
y = data['Survived']

4.3 训练模型

接下来,我们将数据集拆分为训练集和测试集,然后训练逻辑回归模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 初始化并训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'模型准确率: {accuracy:.2f}')

# 计算AUC曲线相关值
y_pred_proba = model.predict_proba(X_test)[:, 1]  # 取正类的预测概率
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
roc_auc = auc(fpr, tpr)

模型训练完成后为了更直观的展示其效果,这里做出AUC曲线图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
# 绘制AUC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (area = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
在这里插入图片描述
在这里插入图片描述

4.4 结果分析

最后,我们通过准确率来评估模型的效果。如果模型效果不好我们可以通过调整模型的超参数或者进行更复杂的特征工程,通常可以提高预测准确率。

5. 总结

通过今天的学习,我们了解了逻辑回归的原理,并通过Kaggle泰坦尼克号数据集做了一个简单的实战项目。逻辑回归是一种非常重要且常用的分类算法,它的实现简单、效果显著,是我们进入机器学习领域的良好起点。

今天在算法修行的路上又迈出了一步,希望大家学习路上一帆风顺,有不懂的地方也可以在评论区留言讨论,我们下期见!

泰坦尼克号:机器学习生死预测数据集地址:https://www.kaggle.com/competitions/titanic/data?select=test.csv

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python篇】深入机器学习核心:XGBoost 从入门到实战
在机器学习中,XGBoost 是一种基于梯度提升的决策树(GBDT)实现,因其卓越的性能和速度,广泛应用于分类、回归等任务。尤其在Kaggle竞赛中,XGBoost以其强大的表现受到开发者青睐。
半截诗
2024/10/09
1.5K0
模型|利用Python语言做逻辑回归算法
问题是这些预测对于分类来说是不合理的,因为真实的概率必然在0到1之间。为了避免这个问题,我们必须使用一个函数对p(X)建模,该函数为X的所有值提供0到1之间的输出。Logistic回归是以其核心函数Logistic函数命名的:
陆勤_数据人网
2019/05/17
1.9K0
模型|利用Python语言做逻辑回归算法
R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况
逻辑回归是一种拟合回归曲线的方法,y=f(x),当y是一个分类变量时。这个模型的典型用途是在给定一组预测因素x的情况下预测y,预测因素可以是连续的、分类的或混合的。
拓端
2021/07/16
2.7K0
R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况
【机器学习笔记】:逻辑回归实战练习(二)
前几篇介绍了逻辑回归在机器学习中的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的
Python数据科学
2018/12/19
9430
Python人工智能:Python决策树分类算法实现示例——基于泰坦尼克号生存者数据集
由于乘客姓名Name、乘票信息Ticket与客舱名称Cabin特征对于乘客的存活影响很小,所以下面首先将其从train_data中剔除:
用户1143655
2023/03/21
1.4K0
Python人工智能:Python决策树分类算法实现示例——基于泰坦尼克号生存者数据集
机器学习中的概率超能力:如何用朴素贝叶斯算法结合标注数据做出精准预测
文章链接:https://cloud.tencent.com/developer/article/2467252
小馒头学Python
2024/11/19
1990
机器学习中的概率超能力:如何用朴素贝叶斯算法结合标注数据做出精准预测
案例实战|泰坦尼克号船员获救预测(XGBoost提交结果)
01 — 回顾 泰坦尼克号的案例系列已经推送了2个,分别解决了数据预处理:特征工程,数据清洗等,包括模型的BaseLine阶段的求解,关于这两篇文章,请参考: 案例实战|泰坦尼克号船员获救预测(数据预
double
2018/04/02
1.5K0
案例实战|泰坦尼克号船员获救预测(XGBoost提交结果)
探索监督式机器学习算法
这周送来一篇python实现的机器学习的相关文章。一起学习吧。能力有限,一切以英文原文为准。里面部分公式改好好久,总是有一些变不过来,这些暂时看英文里面的吧。
WindCoder
2018/09/19
9730
探索监督式机器学习算法
2 机器学习入门——逻辑回归之kaggle泰坦尼克号竞赛
前面几篇逻辑回归的例子有些是人造出来的,有些是比较正规的,但数据都比较完整,没有缺失的属性。虽然我们在很多数据上取到的非常好的效果,但总感觉好像不够味,不像实战。
天涯泪小武
2019/01/17
8140
数据分析入门系列教程-决策树实战
在学习了上一节决策树的原理之后,你有没有想动手实践下的冲动呢,今天我们就来用决策树进行项目实战。
周萝卜
2020/10/30
9510
数据分析入门系列教程-决策树实战
Python 逻辑回归:理论与实践
在当今信息时代,机器学习和人工智能已经渗透到了各行各业,成为推动科技和产业发展的重要驱动力。其中,逻辑回归作为一种简单而有效的分类算法,在数据科学和机器学习领域扮演着重要角色。本篇博客将深入探讨逻辑回归的原理和实现,并通过代码示例展示其在不同数据集上的分类效果。同时,我们还将介绍逻辑回归的优缺点,帮助你更好地理解逻辑回归算法的特点和适用场景。
繁依Fanyi
2023/10/12
6150
Python 逻辑回归:理论与实践
机器学习-对数几率回归(逻辑回归)算法
对数几率回归(Logistic Regression),也称逻辑回归,虽然名字中含有回归,但其实是一种分类算法。找一个单调可微函数将分类任务中的真实标记与线性回归模型的预测值联系起来,是一种广义线性回归。
唔仄lo咚锵
2023/05/23
9820
机器学习-对数几率回归(逻辑回归)算法
Python从零开始第六章机器学习①逻辑回归
在本节中,您将使用机器学习算法解决泰坦尼克号预测问题:Logistic回归。 Logistic回归是一种分类算法,涉及预测事件的结果,例如乘客是否能够在泰坦尼克号灾难中幸存。
用户1359560
2018/12/26
5970
算法入门(五)-- 最“直”的算法线性回归竟如此 “不正经”(附带 Kaggle 实战源码及数据集,速来围观)
大家好,欢迎来到《算法入门》系列。今天我们要聊的是机器学习中最基础、最经典的算法之一——线性回归。如果你是刚入门的朋友,不用担心,我们将用最简单、最通俗的语言带你从零开始理解它。既然是“入门”,那我们就从最基础的概念讲起。
万事可爱^
2025/01/23
2250
算法入门(五)-- 最“直”的算法线性回归竟如此 “不正经”(附带 Kaggle 实战源码及数据集,速来围观)
基于 mlr 包的逻辑回归算法介绍与实践(上)
本期介绍的是 《Machine Learning with R, tidyverse, and mlr》 一书的第四章——逻辑回归(logistic regression)。逻辑回归是基于概率分类的有监督学习算法,它依赖于直线方程,产生的模型非常容易解释和交流。在其最简单的形式中,逻辑回归被用来预测二分类问题,但算法的变体也可以处理多个类。
庄闪闪
2022/04/08
2.4K0
基于 mlr 包的逻辑回归算法介绍与实践(上)
AI-逻辑回归模型
逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛☺️
@小森
2024/03/15
3768
AI-逻辑回归模型
【机器学习-监督学习】逻辑斯谛回归
  在介绍了机器学习中相关的基本概念和技巧后,本章我们继续讲解参数化模型中的线性模型。有了前文的基础,我们可以先来对KNN算法和线性回归进行比较,进一步回答“什么是参数化模型”这一问题。对于机器学习算法来说,其目标通常可以抽象为得到某个从输入空间到输出空间的映射
Francek Chen
2025/01/22
2360
【机器学习-监督学习】逻辑斯谛回归
[数据科学从零到壹]·泰坦尼克号生存预测(数据读取、处理与建模)​​​​​​​
1.Kaggle泰坦尼克号项目页面下载数据:https://www.kaggle.com/c/titanic
小宋是呢
2019/06/27
7850
机器学习之逻辑回归
文中的所有数据集链接:https://pan.baidu.com/s/1TV4RQseo6bVd9xKJdmsNFw
润森
2019/09/17
1K0
机器学习之逻辑回归
分类-对数几率回归(逻辑回归)算法
对数几率回归(Logistic Regression),也称逻辑回归,虽然名字中含有回归,但其实是一种分类算法。找一个单调可微函数将分类任务中的真实标记与线性回归模型的预测值联系起来,是一种广义线性回归。
唔仄lo咚锵
2022/10/07
1.1K0
分类-对数几率回归(逻辑回归)算法
推荐阅读
相关推荐
【Python篇】深入机器学习核心:XGBoost 从入门到实战
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档