【机器学习】突破分类瓶颈:用逻辑回归与Softmax回归解锁多分类世界

【机器学习】突破分类瓶颈:用逻辑回归与Softmax回归解锁多分类世界
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!

文章目录

🍋1. 引言

在机器学习中,分类问题是最常见的一类问题。无论是二分类还是多分类,解决这些问题的算法有很多,其中逻辑回归、Softmax回归和集成学习方法在实际应用中被广泛使用。但在实际数据中,类别不平衡问题可能会影响模型的效果,如何有效地解决这一问题也是一个亟待解决的难题。

🍋2. 逻辑回归

概述:逻辑回归(Logistic Regression)是一种用于二分类问题的经典线性分类器,目标是通过训练数据集的特征来预测某一类别的概率。

模型原理: 逻辑回归的核心是使用sigmoid函数将线性组合的输出映射到[0,1]区间,用于二分类问题:

在这里插入图片描述


其中,𝑤是权重,𝑏是偏置,𝑋是输入特征。

🍋代码实现

from sklearn.linear_model import LogisticRegression from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # 生成数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, random_state=42)# 数据分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练模型 model = LogisticRegression() model.fit(X_train, y_train)# 预测 y_pred = model.predict(X_test)# 评估print(classification_report(y_test, y_pred))

优缺点:

  • 优点:模型简单,计算开销小,容易解释。
  • 缺点:对于非线性问题效果差,容易受到异常值影响。

🍋3. Softmax回归

概述:Softmax回归(Softmax Regression)是逻辑回归的扩展,处理多分类问题。它将输入的线性组合映射到多个类别的概率值。

模型原理: Softmax函数是对逻辑回归的扩展,公式为:

在这里插入图片描述


是偏置。

🍋代码实现

from sklearn.linear_model import LogisticRegression # 使用Softmax回归处理多分类问题 model = LogisticRegression(multi_class='multinomial', solver='lbfgs') model.fit(X_train, y_train) y_pred = model.predict(X_test)print(classification_report(y_test, y_pred))

优缺点:

  • 优点:可以处理多分类问题,适用于线性可分问题。
  • 缺点:当类别数量很多时,计算复杂度较高。

🍋4. 集成学习

概述:集成学习是一种通过结合多个弱学习器来提高模型性能的方法。常见的集成学习方法有Bagging、Boosting和Stacking。

from sklearn.ensemble import RandomForestClassifier # 随机森林分类器 rf = RandomForestClassifier(n_estimators=100) rf.fit(X_train, y_train) y_pred = rf.predict(X_test)print(classification_report(y_test, y_pred))

🍋5. 类别不平衡问题

概述:在现实世界中,很多分类任务会面临类别不平衡的问题,即某一类别的样本数量远远少于其他类别。这会导致模型倾向于预测样本较多的类别,降低模型的整体性能。

解决方法:

  • 重采样:通过增加少数类样本或减少多数类样本来平衡数据集。
  • 加权损失函数:对模型在少数类样本上的误差给予更大的惩罚。
  • 集成方法:例如SMOTE与Boosting结合来提高少数类的预测能力。

🍋代码示例(重采样)

from imblearn.over_sampling import SMOTE # 过采样 smote = SMOTE() X_res, y_res = smote.fit_resample(X_train, y_train)# 训练模型 model = LogisticRegression() model.fit(X_res, y_res) y_pred = model.predict(X_test)print(classification_report(y_test, y_pred))

🍋6. 逻辑回归案例(Iris数据集)

我们将通过以下步骤进行分析:

  • 加载数据:选择Iris数据集。
  • 数据预处理:包括数据分割与标准化。
  • 训练模型:使用逻辑回归训练模型。
  • 评估模型:通过混淆矩阵、准确率等评估模型效果。
Iris数据集包含150个样本,分别来自3个不同种类的鸢尾花(Setosa、Versicolor、Virginica)。每个样本有4个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。目标是根据这些特征来预测鸢尾花的种类。
# 导入需要的库import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report, confusion_matrix import seaborn as sns import matplotlib.pyplot as plt # 1. 加载Iris数据集 iris = load_iris() X = iris.data # 特征 y = iris.target # 标签# 2. 数据分割:80%训练数据,20%测试数据 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 数据标准化:逻辑回归对特征的尺度比较敏感 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test)# 4. 训练逻辑回归模型 logreg = LogisticRegression(max_iter=200) logreg.fit(X_train, y_train)# 5. 在测试集上进行预测 y_pred = logreg.predict(X_test)# 6. 模型评估print("分类报告:")print(classification_report(y_test, y_pred))# 7. 混淆矩阵 cm = confusion_matrix(y_test, y_pred)print("混淆矩阵:")print(cm)# 可视化混淆矩阵 sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=iris.target_names, yticklabels=iris.target_names) plt.xlabel('Predicted') plt.ylabel('True') plt.title('Confusion Matrix') plt.show()

代码分析

  1. 加载Iris数据集:
  • 使用sklearn.datasets.load_iris()加载Iris数据集,数据集已经包含了4个特征和相应的类别标签。
  1. 数据分割:
  • 使用train_test_split将数据分割为训练集和测试集,80%的数据用于训练,20%的数据用于测试。
  1. 数据标准化:
  • 逻辑回归对输入特征的尺度非常敏感,因此我们对数据进行标准化(均值为0,方差为1),使用StandardScaler完成这一操作。
  1. 训练逻辑回归模型:
  • 使用LogisticRegression()创建一个逻辑回归模型,并在训练集上进行训练。max_iter=200指定最大迭代次数,以确保算法收敛。
  1. 预测与评估:
  • 使用训练好的模型对测试集进行预测,并通过classification_report显示分类的准确性、精确度、召回率和F1-score等评估指标。
    使用confusion_matrix计算混淆矩阵,进一步分析模型的分类效果。
  1. 混淆矩阵可视化:
  • 使用Seaborn的heatmap函数将混淆矩阵可视化,更直观地展示分类效果。

🍋评估结果

分类报告如下:

在这里插入图片描述


混淆矩阵如下:

在这里插入图片描述

根据分类报告和混淆矩阵的结果,我们可以得出以下结论:

  • 完美的分类结果:模型的精确度、召回率和F1分数都为1.00,说明模型在每个类别上都没有错误预测,完美地分辨了三个不同种类的鸢尾花。
  • 没有误分类:混淆矩阵显示每个类别的所有样本都被正确分类,没有出现任何误分类的情况。
  • 数据集的简单性:由于Iris数据集是一个相对简单且清晰的分类问题,尤其是在特征与类别之间的边界非常明确时,逻辑回归能够非常好地进行分类。

🍋结论

本文对逻辑回归、Softmax回归、集成学习方法进行了详细分析,并讨论了类别不平衡问题及其解决方法。通过实验验证,选择合适的分类算法和解决方案能够显著提高模型在实际任务中的性能。

希望这篇博客能够为你提供全面的分类问题解决方案,同时帮助理解如何在复杂场景下处理类别不平衡问题,感兴趣的同学别忘了三连哦

在这里插入图片描述
挑战与创造都是很痛苦的,但是很充实。

Read more

OpenClaw 深度解析:从个人 AI 助理到开源智能体平台

目录 一、什么是 OpenClaw? 二、OpenClaw 的核心架构与技术 2.1 运行架构 2.2 技能与工具机制 三、竞品分析:OpenClaw 在智能体生态中的对比 3.1 Agent 框架类(如 AutoGPT / BabyAGI) 3.2 本地智能体(如 LocalGPT + 工具链) 3.3 云服务型交互机器人(如 ChatGPT + Webhooks) 四、商业化成本分析 4.1 模型使用成本 4.2 工程与维护成本 4.3 运营成本 五、开源生态分析 5.

By Ne0inhk

open-notebook与本地AI:在无网络环境下使用开源模型

open-notebook与本地AI:在无网络环境下使用开源模型 【免费下载链接】open-notebookAn Open Source implementation of Notebook LM with more flexibility and features 项目地址: https://gitcode.com/GitHub_Trending/op/open-notebook 你是否遇到过这些场景:在没有网络的飞机上想整理研究笔记,却无法使用云端AI服务?在安全要求极高的环境中工作,担心数据上传到外部服务器?现在,open-notebook结合本地AI模型,让你在完全离线的情况下也能享受智能分析的便利。 读完本文,你将学会如何搭建完全本地化的AI笔记系统,实现: * 100%数据隐私保护,所有内容存储在本地设备 * 无网络环境下的AI问答与内容分析 * 灵活选择适合自己硬件的开源模型 * 低成本替代昂贵的云端API服务 为什么选择本地AI模式? 传统的AI笔记工具依赖云端服务,存在网络依赖、数据隐私和使用成本三大痛点。open-notebook通过本地AI模

By Ne0inhk
国产大模型黑马!文心大模型4.5开源实测:快速部署+多模态识别准,自媒体场景直接封神

国产大模型黑马!文心大模型4.5开源实测:快速部署+多模态识别准,自媒体场景直接封神

1. 前言 大家如果有关注国内开源圈或者AI圈的话,应该都知道,最近发生了一件大事。就在刚刚过去的6月30号,百度正式开源了文心大模型4.5多模态大模型。文心大模型4.5系列开源模型一共有10款,包括8个激活参数规模为47B和3B的混合专家模型(最大的模型总参数量为424B),以及2个0.3B的稠密参数模型。其中,有4款VL模型支持多模态特性,可以对图片、音频、视频等非本文类型的内容进行理解识别。按照官方的介绍,文心大模型4.5是百度自主研发的产业级知识增强大模型,实现了从单模态大模型到多模态、从通用基础大模型到跨领域跨行业的创新突破。本次开源的多个参数模型在大模型基准测试中均取得了突出效果,甚至多项测试结果已经超越了OpenAI-o1、DeepSeek-V3、Qwen2.5等主流大模型。今天就带大家一起测评一下文心大模型4.5系列开源模型,看看它是不是真的有那么强。 下面是视频版的测评内容,可供大家参考 文心大模型4.5开源实测:多模态识别准,自媒体场景直接封神 2. 测评的软硬件环境 接下来,介绍一下本次测评的软硬件环境, 2.1 CPU 16核X86架

By Ne0inhk

OpenCode 完全使用指南:开源 AI 编程助手入门到精通

OpenCode 完全使用指南:开源 AI 编程助手入门到精通 本教程基于 OpenCode 官方文档(https://opencode.ai/docs)和 GitHub 仓库(https://github.com/anomalyco/opencode)编写,适合零基础新手入门。 📚 目录 1. 什么是 OpenCode 2. 安装指南 3. 快速开始 4. 配置文件详解 5. Provider 配置 6. TUI 终端界面使用 7. Agent 系统 8. 自定义命令 9. 快捷键配置 10. MCP 服务器 11. LSP

By Ne0inhk