Hugging Face load_dataset 方法使用

load_dataset 是 Hugging Face datasets 库中最常用的函数之一,它支持从 Hugging Face Hub 或本地加载各种格式的数据集(如 CSV、JSON、Parquet、SQL、文本等)。以下是 load_dataset 的常见用法:


1. 从 Hugging Face Hub 加载公开数据集

from datasets import load_dataset

# 加载 IMDb 电影评论数据集
dataset = load_dataset("imdb")

# 查看数据集的结构
print(dataset)

说明:

  • "imdb" 是数据集名称,Hugging Face Hub 提供大量公开数据集,可以直接通过名称加载。
  • 该数据集包含 "train", "test", "unsupervised" 三个子集,print(dataset) 会显示数据集的结构。

2. 加载特定子集(Split)

# 只加载训练集
train_dataset = load_dataset("imdb", split="train")

# 只加载测试集
test_dataset = load_dataset("imdb", split="test")

# 加载部分数据(切片)
subset = load_dataset("imdb", split="train[:1000]")  # 训练集前 1000 条数据

说明:

  • split="train" 仅加载训练集。
  • split="train[:1000]" 仅加载训练集的前 1000 条数据,这在调试或快速实验时很有用。

3. 加载多语言数据集

# 加载 XNLI 数据集的英文部分
dataset = load_dataset("xnli", "en")

# 加载 XNLI 数据集的中文部分
dataset = load_dataset("xnli", "zh")

说明:

  • "xnli" 是一个跨语言自然语言推理数据集。
  • 第二个参数 "en""zh" 指定语言版本。

4. 从本地文件加载数据

4.1. 加载 CSV 文件

dataset = load_dataset("csv", data_files="data.csv")

4.2. 加载 JSON 文件

dataset = load_dataset("json", data_files="data.json")

4.3. 加载多个文件

dataset = load_dataset("csv", data_files={"train": "train.csv", "test": "test.csv"})

说明:

  • data_files="file.csv" 直接加载单个 CSV 文件。
  • data_files={"train": "train.csv", "test": "test.csv"} 指定不同文件作为不同的子集。

5. 加载压缩格式数据

dataset = load_dataset("csv", data_files="data.zip")

说明:

  • load_dataset 支持加载 .zip.tar.gz 等格式的压缩文件,前提是其中包含可以解析的数据(如 CSV、JSON)。

6. 从本地目录加载 Hugging Face 格式数据集

dataset = load_dataset("/root/DS_ft/medical-o1-reasoning-SFT", "en")

说明:

  • /root/DS_ft/medical-o1-reasoning-SFT 是本地存储的数据集路径。
  • "en" 可能是数据集的子配置。

7. 远程加载(支持 trust_remote_code

dataset = load_dataset("custom_dataset_name", trust_remote_code=True)

说明:

  • 如果数据集脚本包含远程代码(如数据转换或解析逻辑),需要 trust_remote_code=True 允许执行远程代码。

8. 处理大规模数据(Streaming 模式)

dataset = load_dataset("imdb", split="train", streaming=True)

for example in dataset:
    print(example)

说明:

  • streaming=True 使数据集以流式方式加载,适用于超大规模数据集,可避免内存占用过高。

9. 指定缓存目录

dataset = load_dataset("imdb", cache_dir="/custom/cache/path")

说明:

  • cache_dir 允许指定数据集缓存目录,避免重复下载,提高加载速度。

10. 加载特定列

dataset = load_dataset("csv", data_files="data.csv", keep_in_memory=True, features={"text": "string", "label": "int32"})

说明:

  • keep_in_memory=True 让数据存入内存,适用于小型数据集。
  • features 指定数据类型,如 "text" 是字符串,"label" 是整数。

总结

用法示例
加载 Hugging Face Hub 数据集load_dataset("imdb")
加载特定 splitload_dataset("imdb", split="train")
读取部分数据load_dataset("imdb", split="train[:1000]")
加载多语言数据load_dataset("xnli", "zh")
读取本地 CSV 文件load_dataset("csv", data_files="data.csv")
读取本地 JSON 文件load_dataset("json", data_files="data.json")
读取压缩文件load_dataset("csv", data_files="data.zip")
从本地目录加载数据集load_dataset("/path/to/dataset")
远程代码加载load_dataset("custom_dataset", trust_remote_code=True)
流式加载大规模数据load_dataset("imdb", split="train", streaming=True)
指定缓存目录load_dataset("imdb", cache_dir="/custom/cache/path")

load_dataset 功能非常强大,适用于不同场景的数据加载需求。

### 如何使用 `datasets.load_dataset` 加载本地数据 在 Hugging Face 的 `datasets` 库中,`load_dataset` 函数不仅可以从 Hugging Face Hub 下载公开数据集,还可以用来加载本地存储的数据文件。以下是关于如何通过该函数加载本地 CSV、JSON 和 TXT 文件的具体方法。 #### 使用 `load_dataset` 加载本地数据的语法 基本语法如下所示[^3]: ```python from datasets import load_dataset dataset = load_dataset( path='csv', # 或 'json' 或 'text' data_files='/path/to/your/local/file.csv', # 替换为实际路径 split='train' # 可选参数,指定数据集分割方式 ) ``` - **`path`**: 表示数据文件的格式。对于本地文件,可以设置为 `'csv'`, `'json'`, 或 `'text'`。 - **`data_files`**: 提供本地文件的绝对路径或相对路径。如果存在多个文件,也可以传递一个字典来分别定义训练集 (`train`)、验证集 (`validation`) 和测试集 (`test`) 对应的文件位置。 - **`split`**: 定义数据集的划分部分(如 `"train"`、`"test"` 等),默认情况下会自动推断。 #### 示例代码:加载不同类型的本地数据 ##### 1. 加载本地 CSV 文件 假设有一个名为 `example.csv` 的文件位于当前目录下,则可以通过以下代码加载: ```python from datasets import load_dataset dataset_csv = load_dataset('csv', data_files='./example.csv', split='train') print(dataset_csv) ``` ##### 2. 加载本地 JSON 文件 同样地,如果有 JSON 格式的文件,可按此方式进行操作: ```python from datasets import load_dataset dataset_json = load_dataset('json', data_files='./example.json', split='train') print(dataset_json) ``` ##### 3. 加载本地纯文本 (TXT) 文件 针对简单的文本文件,可以直接将其作为输入源读取: ```python from datasets import load_dataset dataset_text = load_dataset('text', data_files='./example.txt', split='train') print(dataset_text) ``` 以上三种情况均展示了如何利用 `load_dataset` 方法灵活处理不同类型的地方储存资料。 #### 流式加载大文件 当面对非常庞大的数据集时,启用流模式能够有效减少内存占用并提高效率。只需将参数 `streaming=True` 添加至调用即可实现这一功能: ```python from datasets import load_dataset dataset_streamed = load_dataset('csv', data_files='./large_file.csv', split='train', streaming=True) for sample in dataset_streamed: print(sample) ``` 这样每次仅需加载少量样本进入内存完成迭代访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值