load_dataset()的用法

load_dataset 是 Hugging Face datasets 库中的一个核心函数,用于从 Hugging Face Hub本地路径加载各种数据集。

from datasets import load_dataset
​
dataset = load_dataset("dataset_name", "configuration", split="split_name")
​

name(数据集名称)

  • 用于指定数据集的名称,例如 "imdb""squad""librispeech_asr" 等。

  • 数据集名称是 Hugging Face 数据集库中的唯一标识。

configuration(数据集配置)

  • 一些数据集有多种配置,这些配置通常用于区分不同的子集。例如,"librispeech_asr""clean""other" 配置,分别表示音质较高和噪音较大的音频数据。

  • 并不是所有数据集都有配置参数,只有当数据集包含多个子集时才需要指定。

split(数据集分区)

  • 选择数据集的分区(或切片),例如 "train""test""validation"

  • 还可以指定数据集的切片,例如 "train[:10%]" 表示加载训练集的前 10% 数据,"validation[:100]" 表示加载验证集的前 100 条样本。

  • 如果不指定,通常会加载数据集的所有分区

输出内容:

load_dataset 返回一个 DatasetDatasetDict 对象,取决于是否指定了 split 参数:

# 不指定 split 参数,返回 DatasetDict
dataset_dict = load_dataset("imdb")
print(dataset_dict)
# 输出:
 DatasetDict({
     train: Dataset({
         features: ['text', 'label'],
         num_rows: 25000
     })
     test: Dataset({
         features: ['text', 'label'],
         num_rows: 25000
     })
 })
​
# 指定 split 参数,返回 Dataset
train_dataset = load_dataset("imdb", split="train")
print(train_dataset)
# 输出:
 Dataset({
     features: ['text', 'label'],
     num_rows: 25000
 })

Dataset 的结构

Dataset 是一个类似于表格的结构,可以包含多列数据,每列都有自己的特定名称和数据类型。常见的结构包括:

  • features:特征的定义。例如,"text""label" 表示数据集包含文本和标签列

  • num_rows:样本数量。

每个样本可以通过索引或迭代访问,例如 train_dataset[0]train_dataset[:5] 获取前 5 个样本。

### 使用 `load_dataset` 进行数据集分割 当利用 Hugging Face 的 `datasets` 库加载数据时,可以指定不同的切分方式来获得训练集、验证集或测试集。通过设置参数 `split` 可以实现这一点[^1]。 对于简单的单次分割操作,在调用 `load_dataset` 函数时直接传入所需的 `split` 参数即可: ```python from datasets import load_dataset # 加载并仅获取训练部分的数据集 ds_train = load_dataset('rotten_tomatoes', split='train') ``` 如果希望创建更复杂的多份子集组合,则可以在一次请求中定义多个切割条件,并将其封装在一个字典内传递给 `split` 参数: ```python splits = { 'train': 'train[:80%]', 'validation': 'train[80%:]' } ds_splits = {k: load_dataset('rotten_tomatoes', split=v) for k, v in splits.items()} ``` 另外,还可以先整体读取整个数据集再手动执行划分动作,这种方法适用于那些不支持直接按比例分配的特殊场景下使用: ```python full_ds = load_dataset('rotten_tomatoes')['train'] n_samples = len(full_ds) # 假设我们想要70%-30%的比例作为训练/验证集合 train_size = int(0.7 * n_samples) val_size = n_samples - train_size import random random.seed(42) # 设置随机种子保证可重复性 indices = list(range(n_samples)) random.shuffle(indices) train_indices = indices[:train_size] val_indices = indices[train_size:] train_set = full_ds.select(train_indices) val_set = full_ds.select(val_indices) ``` 上述方法展示了三种不同层次上的数据集拆分策略,可以根据实际需求灵活选用最合适的方案[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值