机器学习:常见的数据集结构

在机器学习中,数据的组织方式直接影响模型的训练方式与算法设计。

不同类型的学习任务,对应的数据结构也有所不同。例如,监督学习通常需要标签数据,而无监督学习则只依赖数据本身的结构;时间序列数据强调时间顺序,而图数据则强调对象之间的关系结构。

在实际应用中,机器学习数据通常以 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)。

强化学习算法通过不断积累这些交互数据来学习最优策略。

📘 小结

在机器学习中,不同任务类型对应不同的数据集结构。监督学习数据集通常由特征矩阵和标签数组组成,而无监督学习数据集通常只包含特征数据。除此之外,还存在半监督学习、时间序列、序列数据、图数据、多模态数据以及强化学习交互数据等多种形式。理解这些常见的数据组织方式,有助于根据任务特点正确构建数据,并选择合适的机器学习方法。

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

相关推荐
环黄金线HHJX.2 小时前
《Tuan(拼音字母)⇆团(Group)/&湍(Turbulence)/&双结构链路道/&文字、符号、语言/&源点设计、连接起:人类与自然+AICosmOS》
开发语言·人工智能·算法·编辑器
GISer_Jing2 小时前
Claude Code网桥架构深度解析
人工智能·ai·架构·aigc
汤姆yu2 小时前
深度理解Harness架构:AI智能体的生产级运行基石
人工智能·架构·harness
程序员Shawn2 小时前
【深度学习 | 第二篇】- 神经网络基础
人工智能·深度学习·神经网络
MicrosoftReactor2 小时前
技术速递|使用 Copilot CLI 中的 /fleet 一次运行多个智能体
人工智能·copilot·cli·智能体
灵机一物2 小时前
灵机一物AI原生电商小程序(已上线)-AI Agent+社交裂变:电商增长闭环的技术落地全解析(附代码结构与风控方案)
人工智能·ai agent·redis缓存·电商技术·langgraph·社交裂变·风控方案
2601_949817922 小时前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java·人工智能·spring
AI科技星2 小时前
万能学习方法论的理论建构与多领域适配性研究(乖乖数学)
人工智能·学习·算法·机器学习·平面·数据挖掘
格林威2 小时前
ZeroMQ 在视觉系统中的应用
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测