ML:序列数据集的基本结构

在机器学习中,有些数据并不是独立的样本集合,而是按顺序排列的数据序列(sequence data)。在这种数据中,样本之间存在明确的顺序关系,前后的数据通常具有依赖性。

序列数据广泛出现在以下领域:

• 文本数据(句子、文档)

• 语音信号

• DNA 序列

• 用户行为序列

从结构上看,一个典型的序列数据集通常包括以下几部分:

• 序列数据(sequence data)

• 序列特征表示(sequence feature representation)

• 目标值或标签(target values,可选)

• 特征名称(feature names,可选)

• 数据说明(dataset description,可选)

下面分别介绍这些概念,并使用一个简单的文本序列示例进行说明。

一、序列数据

1、基本概念

序列数据的基本单位是序列(sequence)。一个序列通常由一组按顺序排列的元素组成。

例如,一个句子可以表示为:

css 复制代码
["I", "love", "machine", "learning"]

这些元素通常称为:

• token(词或符号)

• symbol(符号)

• element(元素)

如果一个数据集中包含 n 个序列,每个序列长度最多为 m,则可以表示为:

cs 复制代码
S =[ [s11, s12, s13, ...], [s21, s22, ...], ...]

其中:

• 每一行表示一个序列

• 每一列表示序列中的位置

在实际应用中,序列长度通常不固定,因此不同序列的长度可能不同。

不同序列长度可能不同,因此 S 更接近列表结构,而不是严格矩阵。

2、简单示例

假设一个简单的文本数据集包含三个句子:

css 复制代码
["I", "love", "AI"]["Machine", "learning", "is", "powerful"]["Data", "science"]

每一行表示一个文本序列。

3、Scikit-Learn 数据集示例

Scikit-Learn 提供了 20 Newsgroups 文本数据集,该数据集包含来自 20 个新闻组的文章文本。

python 复制代码
from sklearn.datasets import fetch_20newsgroups
news = fetch_20newsgroups()print(len(news.data))

示例输出:

go 复制代码
11314

说明:

kotlin 复制代码
news.data:文本序列(每个元素是一篇文章)news.target:文章所属的新闻组类别news.target_names:类别名称

在该数据集中,每一篇文章都可以看作一个文本序列。

二、序列特征表示

1、基本概念

机器学习模型通常不能直接处理文本或符号序列,因此需要将序列转换为数值表示。

常见的方法是将每个元素编码为整数或向量,例如:

javascript 复制代码
"I" → 1"love" → 2"AI" → 3

这样,一个序列就可以表示为:

cs 复制代码
[1, 2, 3]

如果一个数据集中有 n 个序列,每个序列长度为 m,这些序列就可以组成一个矩阵:

cs 复制代码
X =[ [1, 2, 3], [4, 5, 6], ...]

矩阵维度通常表示为:

go 复制代码
(n_sequences, sequence_length)

在实际应用中,序列长度通常会通过:

• 截断(truncation)

• 填充(padding)

进行统一处理。

在 Scikit-Learn 中,文本序列通常需要通过 CountVectorizer 或 TfidfVectorizer 等方法转换为数值特征矩阵。

python 复制代码
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()X = vectorizer.fit_transform(news.data)print(X.shape)

示例输出:

go 复制代码
(11314, 130000+)

说明:

• 每一行表示一篇文章

• 每一列表示一个词语特征

2、简单示例

例如:

css 复制代码
["I", "love", "AI"]

可以转换为:

cs 复制代码
[1, 2, 3]

如果统一序列长度为 5,则可以表示为:

cs 复制代码
[1, 2, 3, 0, 0]

其中:

css 复制代码
0 → padding

三、目标值(标签)

1、基本概念

在许多序列任务中,每个序列通常对应一个目标值或标签。

例如:

• 文本分类

• 情感分析

• 语音识别

标签数组通常记为 y,其结构通常为:

go 复制代码
(n_sequences,)

即,每个序列对应一个标签。

2、简单示例

假设我们进行情感分类:

javascript 复制代码
"I love AI" → positive"AI is difficult" → negative

可以编码为:

ini 复制代码
y = [1, 0]

其中:

go 复制代码
1 → positive0 → negative

3、20 Newsgroups 数据集示例

在 20 Newsgroups 数据集中,每篇文章都对应一个类别标签:

apache 复制代码
print(news.target[:5])

示例输出:

cs 复制代码
[7 4 4 1 14]

类别名称可以通过:

apache 复制代码
print(news.target_names[news.target[0]])

例如:

go 复制代码
rec.autos

因此在该数据集中:

css 复制代码
X → 文本特征矩阵y → 新闻组类别

四、特征名称

在序列数据中,元素通常来自一个词汇表(vocabulary)。

词汇表可以看作是一种特征名称集合:

css 复制代码
["I", "love", "AI", "machine", "learning"]

在数值编码之后,这些词通常与整数 ID 对应:

css 复制代码
1 → I2 → love3 → AI

这种映射关系有助于解释序列数据的含义。实际编码通常由词汇表(vocabulary)自动分配。

五、数据说明

1、基本概念

许多序列数据集还会提供背景说明信息,例如:

• 数据来源

• 数据规模

• 词汇表大小

• 数据采集方式

这些信息可以帮助理解数据的背景和用途。

2、示例

例如:

数据来源:社交媒体评论

样本数量:50000

词汇表大小:20000

这些信息通常会记录在数据集说明文档中。

六、序列数据集结构关系

一个典型的序列数据集可以表示为:

css 复制代码
序列数据集│├── 序列数据 S│     └── 每一行表示一个序列│├── 数值特征矩阵 X│     └── 序列转换后的数值表示(例如词袋或 TF-IDF)│├── 标签数组 y(可选)│├── 词汇表 / 特征名称(可选)│└── 数据说明

这种结构描述了序列元素之间的顺序关系,并为模型提供可计算的数值表示。

📘 小结

序列数据集的核心特点是样本内部存在明确的顺序结构。一个序列通常由多个按顺序排列的元素组成,在机器学习中需要将这些元素转换为数值表示,从而形成序列特征矩阵。在许多任务中,每个序列还可能对应一个标签,用于完成分类或预测任务。理解序列数据的结构,是处理文本、语音以及行为序列等问题的重要基础。

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

相关推荐
黎阳之光1 小时前
【黎阳之光:AI+视频孪生赋能,筑牢城市生命线安全屏障 】
大数据·人工智能·安全·智慧城市·数字孪生
淮南颂恩少儿编程1 小时前
淮南少儿编程 | CSP-J真题详解:在淮南也有接地气的算法课
c++·人工智能·python·深度学习·算法·青少年编程·蓝桥杯
arvin_xiaoting2 小时前
AI Agent行为约束失效深度分析:为何SOUL.md无法完全控制Agent行为
人工智能·ai·agent·soul·约束系统·行为约束·偏离分析
二进制的Liao2 小时前
从“龙虾”到失控:自主AI智能体安全性博弈
人工智能·机器学习·ai·aigc·ai-native
程序员柒叔2 小时前
Dify 版本追踪 - 2026-W12
人工智能·github·工作流·dify
小超同学你好2 小时前
LangGraph 12. Learning & Adaptation,用 LangGraph 写一个会「改进自己」的智能体(含代码示例)
人工智能·语言模型·langchain
愈努力俞幸运2 小时前
n8n草履虫教程
人工智能
Once_day2 小时前
AI实践(8)Skills技能
人工智能·ai实践
光锥智能2 小时前
光粒科技多款AI+AR智能运动产品亮相AWE2026
人工智能·科技·ar