在机器学习中,数据的组织方式直接影响模型的训练方式与算法设计。
不同类型的学习任务,对应的数据结构也有所不同。例如,监督学习通常需要标签数据,而无监督学习则只依赖数据本身的结构;时间序列数据强调时间顺序,而图数据则强调对象之间的关系结构。
在实际应用中,机器学习数据通常以 NumPy 数组、矩阵或结构化对象的形式组织。在 Scikit-Learn 中,许多示例数据集通过 sklearn.datasets 模块提供,这些数据集不仅用于算法示例,也体现了常见的数据组织方式。
从机器学习任务的角度看,常见的数据集结构主要包括以下几类:
• 监督学习数据集
• 无监督学习数据集
• 半监督学习数据集
• 自监督学习数据集
• 时间序列数据集
• 序列数据集
• 图数据集
• 多模态数据集
• 强化学习中的经验数据
监督学习是机器学习中最常见的学习方式。其核心特点是:每个样本都对应一个已知标签。
一个典型的监督学习数据集通常包括:
• 特征矩阵(feature matrix)
• 标签数组(target array)
特征矩阵通常记为:
css
X
标签数组通常记为:
css
y
特征矩阵的结构为:
go
(n_samples, n_features)
标签数组的结构为:
go
(n_samples,)
训练模型时的常见形式为:
css
model.fit(X, y)
下面以 Scikit-Learn 提供的鸢尾花数据集(Iris dataset)为例观察其结构:
python
from sklearn.datasets import load_iris
iris = load_iris()
print(iris.data.shape)print(iris.target.shape)
示例输出:
go
(150, 4)(150,)
说明:
• iris.data:特征矩阵
• iris.target:标签数组
该数据集常用于分类算法示例。
在无监督学习中,数据通常没有标签信息。算法需要根据数据本身的结构发现潜在模式。
因此,一个典型的无监督学习数据集通常只包含:
• 特征矩阵
表示为:
css
X
其结构为:
go
(n_samples, n_features)
模型训练通常为:
css
model.fit(X)
常见任务包括:
• 聚类(clustering)
• 降维(dimensionality reduction)
• 异常检测(anomaly detection)
示例:
Scikit-Learn 提供的 Digits 数据集本身包含标签,但在无监督学习任务中,可以只使用其中的特征矩阵 digits.data。
python
from sklearn.datasets import load_digits
digits = load_digits()
print(digits.data.shape)
输出示例:
go
(1797, 64)
说明:
• 每个样本是一张 8×8 手写数字图像
• 图像被展开为 64 维特征向量
在无监督学习任务中,可以只使用:
ini
X = digits.data
例如用于聚类或降维分析。
半监督学习介于监督学习与无监督学习之间:只有部分样本具有标签。
典型结构包括:
css
Xy
其中:
• 部分样本具有标签
• 在一些实现中,未标注样本常用 -1 作为占位标记;但这并不是唯一方式,具体表示形式取决于所使用的库和算法实现
例如:
ini
y = [0, 1, 2, -1, -1, -1]
其中:
diff
-1
表示该样本没有标签。
示例:Digits 数据集的半监督应用
makefile
from sklearn.datasets import load_digitsfrom sklearn.semi_supervised import LabelPropagation
digits = load_digits()
X = digits.datay = digits.target.copy()
# 隐藏部分标签y[100:] = -1
model = LabelPropagation()model.fit(X, y)
Scikit-Learn 中常见半监督算法包括:
• LabelPropagation
• LabelSpreading
自监督学习(self-supervised learning)是一种不依赖人工标签的学习方式。模型通过设计预训练任务(pretext task),从数据本身构造学习目标。
从训练任务的角度看,自监督学习通常涉及:
• 原始特征数据
• 自动生成的训练目标
表示为:
css
Xy_generated
其中:
css
X : (n_samples, n_features)
自动生成的目标数据通常由数据本身构造,例如:
• 重建输入数据
• 预测被遮挡的部分
• 判断两个样本是否相似
例如,可以仍以 Scikit-Learn 提供的 Digits 手写数字数据集作为原始输入数据:
python
from sklearn.datasets import load_digits
digits = load_digits()
print(digits.data.shape)
输出示例:
go
(1797, 64)
说明:
• 每个样本是一张 8×8 手写数字图像
• 图像被展开为 64 维特征向量
在自监督学习任务中,可以直接使用:
ini
X = digits.data
自监督学习通常直接使用未标注原始数据,监督信号由训练过程自动构造。因此,从数据组织角度看,它常常仍然以原始样本集合 X 为基础,只是训练目标不是人工给出的标签,而是由任务机制动态生成。
时间序列数据的核心特点是:数据具有时间顺序。
一个典型的时间序列数据集通常包括:
• 时间索引
• 特征矩阵
• 目标变量(可选)
例如:
go
时间 温度2026-01-01 122026-01-02 142026-01-03 13
在机器学习中,时间序列数据通常会通过滑动窗口(sliding window) 转换为监督学习形式:
ini
X = [x1, x2, x3]y = x4
这样就可以使用普通机器学习模型进行预测。
时间序列数据广泛应用于:
• 股票预测
• 销售预测
• 传感器监测
序列数据由一组按顺序排列的元素组成,例如:
css
["I", "love", "machine", "learning"]
在机器学习中,序列通常需要转换为数值表示,例如:
cs
[1, 2, 3, 4]
若经过截断、填充或编码后,序列数据常可表示为:
nginx
X : (n_sequences, sequence_length)y : (n_sequences,) # 可选
序列数据常见于:
• 文本数据
• 语音信号
• 用户行为序列
从广义上说,时间序列也属于序列数据;但由于其顺序具有明确的时间含义,并常涉及滞后、趋势、季节性等问题,因此通常单独作为一类讨论。
示例:20 Newsgroups 数据集
Scikit-Learn 提供 20 Newsgroups 文本数据集:
python
from sklearn.datasets import fetch_20newsgroups
data = fetch_20newsgroups()
print(len(data.data))
该数据集包含:
• 文本序列
• 分类标签
通常需要使用 TF-IDF 或 词袋模型进行特征转换。
图数据用于描述对象之间的关系结构。
一个典型的图数据集通常包括:
• 节点特征矩阵
• 邻接结构
• 节点标签(可选)
常见表示方式:
css
X → 节点特征A → 邻接矩阵y → 节点标签
其中:
css
X : (n_nodes, n_features)A : (n_nodes, n_nodes)
图数据常见任务包括:
• 节点分类
• 链接预测
• 图分类
虽然 Scikit-Learn 不是专门的图学习框架,但可以构建样本相似度图:
javascript
from sklearn.datasets import load_irisfrom sklearn.neighbors import kneighbors_graph
iris = load_iris()
A = kneighbors_graph(iris.data, 5)
这里 A 表示样本之间的邻接关系。
多模态数据集同时包含多种不同类型的数据来源。
例如:
• 图像
• 文本
• 音频
• 表格数据
一个样本可能同时包含多种模态信息,例如:
go
图像 + 文本描述
数据结构通常表示为多个特征矩阵:
nginx
X_imageX_text
这些矩阵通常具有相同的样本数量:
go
(n_samples, ...)
关键在于不同模态必须按样本一一对应,否则无法进行联合学习。
多模态学习广泛应用于:
• 图像描述
• 视频理解
• 跨模态检索
强化学习的数据来自智能体与环境的交互过程。
每一次交互通常记录为:
perl
(state, action, reward, next_state)
即:
powershell
(s, a, r, s')
其中:
• state:当前环境状态
• action:执行的动作
• reward:获得的奖励
• next_state:下一状态
这些数据通常存储在经验集合中,例如经验回放缓冲区(Replay Buffer)。
强化学习算法通过不断积累这些交互数据来学习最优策略。
📘 小结
在机器学习中,不同任务类型对应不同的数据集结构。监督学习数据集通常由特征矩阵和标签数组组成,而无监督学习数据集通常只包含特征数据。除此之外,还存在半监督学习、时间序列、序列数据、图数据、多模态数据以及强化学习交互数据等多种形式。理解这些常见的数据组织方式,有助于根据任务特点正确构建数据,并选择合适的机器学习方法。

"点赞有美意,赞赏是鼓励"