机器学习入门扩展内容
无监督学习
在没有人工标签的数据中发现结构、分组或低维表示。
前置知识
通俗直觉
把一盒没有说明书的积木按相似性自动分组,模型只依据数据之间的距离和分布。
核心原理
K-Means 交替执行样本分配与中心更新,使样本到所属簇中心的平方距离总和尽量小。
数学公式
目标是让每个样本靠近它所属簇的中心 μ。
工作流程
- 1
选择表示和相似度
- 2
初始化簇中心
- 3
分配样本到最近中心
- 4
更新中心直到稳定
代码示例
无监督学习 示例
NumPy
example.py用途:代码手写了 K-Means 的两步迭代。真实任务还需处理初始化、空簇与簇数选择。
import numpy as np
X = np.array([[1,1], [1,2], [8,8], [9,8]])
centers = np.array([[1,1], [8,8]], dtype=float)
for _ in range(5):
labels = ((X[:, None] - centers) ** 2).sum(2).argmin(1)
centers = np.array([X[labels == k].mean(0) for k in range(2)])
print(labels, centers)代码解析
代码手写了 K-Means 的两步迭代。真实任务还需处理初始化、空簇与簇数选择。
- — 广播计算样本到所有中心的距离
- — 按标签重新计算均值
应用场景
- 用户分群
- 异常检测
- 降维可视化
常见误区
簇不一定对应真实类别
距离尺度会改变结果