当前位置: 首页 > java >正文

【深度学习与大模型基础】第14章-分类任务与经典分类算法

Part 1:什么是分类任务?

1.1 分类就是“贴标签”

想象你有一堆水果,有苹果🍎、橘子🍊、香蕉🍌,你的任务是让机器学会自动判断一个新水果属于哪一类——这就是分类(Classification)

关键点

  • 输入:数据(比如水果的颜色、形状、重量)。

  • 输出:类别标签(苹果、橘子、香蕉)。

1.2 分类 vs. 回归

  • 分类:预测离散标签(比如“猫/狗”)。

  • 回归:预测连续值(比如“房价多少万”)。

例子

  • 分类:判断邮件是“垃圾邮件”还是“正常邮件”。

  • 回归:预测明天股票的价格。


Part 2:经典分类算法

2.1 SVM(支持向量机)—— “最佳分界线”

核心思想:找到一条最宽的“马路”(决策边界),让不同类别的数据离这条线尽可能远。

生活例子

  • 你在教室里画一条“三八线”,让男生女生尽量远离这条线,避免冲突。

  • 支持向量:离分界线最近的那些点(最容易分错的样本)。

适用场景

  • 小样本、高维数据(如文本分类、图像识别)。

  • 对噪声不太敏感,抗过拟合能力强。

缺点

  • 数据量太大时计算慢。

python实例代码

import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs# 1. 生成数据集
X, y = make_blobs(n_samples=100, centers=2, random_state=6)# 2. 创建SVM模型并训练
model = svm.SVC(kernel='linear', C=1.0)
model.fit(X, y)# 3. 创建网格以绘制决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),np.arange(y_min, y_max, 0.02))# 4. 预测网格中的点
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)# 5. 绘制结果
plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('SVM Decision Boundary')
plt.show()

2.2 朴素贝叶斯(Naive Bayes)—— “概率算命大师”

核心思想:基于贝叶斯定理,计算某个数据属于哪一类的概率,选择概率最大的类别。

生活例子

  • 你看到一个人戴眼镜、穿格子衫、背电脑包,猜测他是程序员👨‍💻还是老师👨‍🏫?

  • 朴素贝叶斯会计算:

    • P(程序员 | 眼镜+格子衫+电脑包) = ?

    • P(老师 | 眼镜+格子衫+电脑包) = ?

    • 选概率更高的那个!

“朴素”在哪?
假设所有特征(眼镜、格子衫、电脑包)之间相互独立(现实中不一定,但简化计算)。

适用场景

  • 文本分类(如垃圾邮件过滤、情感分析)。

  • 计算快,适合高维数据。

缺点

  • 特征独立性假设太强,现实数据往往不符合。


2.3 KNN(K近邻)—— “近朱者赤,近墨者黑”

核心思想:一个新数据点属于哪一类,就看它的K个最近邻居大多数属于哪一类。

生活例子

  • 你想知道新搬来的邻居是“安静型”还是“派对型”?

  • 你调查他最近的3个邻居(K=3),发现2个爱开派对,1个安静,于是你猜他是“派对型”🎉。

关键点

  • K的选择:K太小容易受噪声影响,K太大会忽略局部特征。

  • 距离计算:常用欧氏距离(就像地图上的直线距离)。

适用场景

  • 数据分布复杂、边界不规则时表现好(如手写数字识别)。

  • 简单直观,适合入门。

缺点

  • 计算量大(每次预测都要算所有样本的距离)。

  • 对高维数据效果下降(“维度灾难”)。


Part 3:深度学习中的分类模型

3.1 CNN(卷积神经网络)—— “图像分类之王”

核心思想:模仿人眼,用“卷积核”扫描图像,提取局部特征(如边缘、纹理),最后分类。

生活例子

  • 你教小孩认猫🐱和狗🐶,先看耳朵形状、鼻子大小,再整体判断——CNN也是这样!

关键特点

  • 卷积层:局部感知,参数共享(减少计算量)。

  • 池化层:降维(比如“最大池化”只保留最显著特征)。

适用场景

  • 图像分类、目标检测(如人脸识别、自动驾驶)。


3.2 RNN(循环神经网络)—— “记忆大师”

核心思想:处理序列数据(如文本、语音),通过“记忆”前面的信息影响后面的输出。

生活例子

  • 你读一句话:“我爱吃___”,前面的词提示这里该填“苹果”而不是“汽车”——RNN会记住上下文!

关键特点

  • 循环结构:隐藏层会传递信息给下一步。

  • LSTM/GRU:改进版,解决长序列记忆问题(比如机器翻译)。

适用场景

  • 自然语言处理(NLP)、语音识别、时间序列预测。


总结:一张表搞定所有算法

算法核心思想适用场景缺点
SVM找最宽的分界线小样本、高维数据大数据计算慢
朴素贝叶斯算概率,选最大文本分类特征独立性假设太强
KNN看K个邻居投票简单分类计算量大
CNN卷积提取图像特征图像识别需要大量数据
RNN记忆序列信息NLP、语音长序列训练困难
http://www.xdnf.cn/news/2843.html

相关文章:

  • 从 BERT 到 GPT:Encoder 的 “全局视野” 如何喂饱 Decoder 的 “逐词纠结”
  • 高定电视,一场关于生活方式的觉醒
  • 在spark里通过jps命令,看到的进程
  • 【C++11】包装器:function与bind
  • iVX 引领软件开发进入 “可视化逻辑时代”
  • vue+cesium线流动纹理
  • WPF TextBlock控件性能优化指南
  • 【RK3588嵌入式图形编程】-Cairo-快速了解Cairo图形库
  • MongoDB的图形化工具robo3t,navicat
  • k8s-Pod生命周期
  • Tomcat 部署配置指南
  • java使用websocket推送消息到页面
  • 为什么执行了删除语句后mysql内存无变化?
  • Vue 2 和 Vue 3 中 Vue 实例变量方法的功能差异对比,包含关键方法的详细说明和表格总结
  • 硅基计划 学习总结 拾
  • 软考-软件设计师中级备考 7、算法设计与分析
  • 如何理解promise 续二
  • C语言学习路线
  • 国内外都有哪些医药医学方面的指南检索数据库?
  • 模电——PN结
  • TensorRT详解
  • 如何在idea中编写spark程序
  • java快速幂
  • 从传统制造到智能工厂:MES如何重塑电子制造业?
  • ship_plant船舶模型
  • QT事件Trick
  • 网络》》ARP、NAT
  • 【题解】CF2096F
  • JAVA中Spring全局异常处理@ControllerAdvice解析
  • 【前端】跟进新趋势- PWA WebAssembly