共计 1876 个字符,预计需要花费 5 分钟才能阅读完成。
人工智能技术栈全景图
当我们在说人工智能(Artificial Intelligence, AI)时,其实是在讨论一个包含多个层级的工具箱。最底层是 机器学习(Machine Learning)——让计算机通过数据自动改进算法的技术。往上走会出现两个分支:

- 模式识别(Pattern Recognition):专注于从数据中发现规律(比如人脸识别中的五官分布特征)
- 数据挖掘(Data Mining):更强调从海量数据中提取商业价值(如电商推荐系统)
而 计算机视觉(Computer Vision)和 自然语言处理(Natural Language Processing, NLP)则是机器学习在特定领域的应用,就像用同一个数学公式分别解决物理题和化学题。
三大学习范式对比
| 类型 | 适用场景 | 典型算法 | 数据要求 |
|---|---|---|---|
| 监督学习 | 有明确输入输出对应关系 | 随机森林、SVM | 需要标注数据 |
| (Supervised Learning) | (如房价预测、垃圾邮件分类) | ||
| 无监督学习 | 发现数据内在结构 | K-Means、PCA | 只需原始数据 |
| (Unsupervised Learning) | (客户分群、异常检测) | ||
| 强化学习 | 动态决策场景 | DQN、PPO | 需要奖励机制 |
| (Reinforcement Learning) | (游戏 AI、自动驾驶) |
实战代码演示
1. Scikit-learn 分类全流程
# 数据标准化:使特征服从标准正态分布(均值 0,方差 1)from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train) # 计算均值和方差并应用
# 特征工程:PCA 降维保留 95% 方差信息
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95) # 自动计算所需维度
X_pca = pca.fit_transform(X_train)
# 模型训练:带交叉验证的随机森林
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(
n_estimators=100, # 决策树数量
max_depth=5, # 防止过拟合
class_weight='balanced' # 处理类别不平衡
)
model.fit(X_pca, y_train)
2. OpenCV 图像特征提取
import cv2
# Canny 边缘检测:通过梯度阈值识别物体轮廓
edges = cv2.Canny(
image,
threshold1=100, # 弱边缘阈值
threshold2=200 # 强边缘阈值
)
# SIFT 特征点检测(专利算法需安装 opencv-contrib)sift = cv2.SIFT_create()
keypoints = sift.detect(gray_img, None) # 关键点坐标和方向
3. NLP 文本预处理
from sklearn.feature_extraction.text import TfidfVectorizer
# 创建包含停用词处理的流水线
tfidf = TfidfVectorizer(
stop_words='english', # 移除常见无意义词
ngram_range=(1,2), # 同时考虑单词和双词组合
max_features=5000 # 限制特征维度
)
# TF-IDF 计算:反映词在文档中的重要性
# 公式:词频(TF) × 逆文档频率(IDF)
X_tfidf = tfidf.fit_transform(text_data)
生产环境避坑指南
类别不平衡问题
- 解决方案:
- 上采样少数类(SMOTE 算法生成合成样本)
- 给不同类别设置惩罚权重(如 scikit-learn 的 class_weight 参数)
- 改用 F1-score 替代准确率作为评估指标
模型过拟合识别
- 预警信号:
- 训练集准确率 >95% 而测试集 <70%
- 损失函数曲线出现明显发散
- 应对策略:
- 添加 L2 正则化项约束权重
- 早停法(Early Stopping)监控验证集表现
- Dropout 随机屏蔽神经网络节点
推理性能优化
- 技巧:
- 模型量化(float32 转 int8)
- 使用 ONNX Runtime 加速推理
- 批量处理代替单条预测
思考与实践
- 当你的分类模型召回率(Recall)偏低时,可以通过哪些特征工程手段进行改进?
- 在图像识别任务中,为什么边缘检测通常是预处理的第一步?尝试用 OpenCV 比较不同阈值的效果
- 如果 TF-IDF 矩阵过于稀疏(99% 元素为 0),会带来哪些实际问题?有哪些替代方案?
(全文字数:约 1500 字)
正文完
发表至: 未分类
近两天内
