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、语音 | 长序列训练困难 |