机器学习新手入门:从数据挖掘到计算机视觉的实战指南

1次阅读
没有评论

共计 1876 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

人工智能技术栈全景图

当我们在说人工智能(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 加速推理
  • 批量处理代替单条预测

思考与实践

  1. 当你的分类模型召回率(Recall)偏低时,可以通过哪些特征工程手段进行改进?
  2. 在图像识别任务中,为什么边缘检测通常是预处理的第一步?尝试用 OpenCV 比较不同阈值的效果
  3. 如果 TF-IDF 矩阵过于稀疏(99% 元素为 0),会带来哪些实际问题?有哪些替代方案?

(全文字数:约 1500 字)

正文完
 0
评论(没有评论)