一、说明
- 用途:Datesets 顾名思义就是用来加载和保存数据集的组件
二、加载Huggingface数据集
- 选择数据集
如下图,你可以在对应位置选择你想要的数据集,选择任务和语言后,右边会出现对应的数据集

点进去对应的数据集,可以看到预览整个数据集,然后点击复制按钮就可以加载数据集了。

- 加载数据集
1 2 3
| from datasets import * datasets = load_dataset("shibing624/snli-zh") print(datasets)
|
输出结果如下,可以看到整个数据集的配置:只有一个训练集集,一共有419402条数据,每条数据包含三个字段。
1 2 3 4 5 6
| DatasetDict({ train: Dataset({ features: ['premise', 'hypothesis', 'label'], num_rows: 419402 }) })
|
三、加载本地数据集
加载本地数据集,支持多种格式,在官方文档里提到的方式有 **JSON, CSV, Parquet, text等
加载csv文件
csv文件示例
| label |
review |
| 1 |
很快,好吃,味道足,量大 |
| 1 |
没有送水没有送水没有送水 |
| 1 |
非常快,态度好。 |
| 1 |
方便,快捷,味道可口,快递给力 |
| 1 |
菜味道很棒!送餐很及时! |
加载数据集
1 2
| dataset = load_dataset("csv", data_files="./waimai_10k.csv") print(dataset)
|
1 2 3 4 5 6
| DatasetDict({ train: Dataset({ features: ['label', 'review'], num_rows: 11987 }) })
|
加载JSON文件
1 2
| dataset = Dataset.from_json("./waimai_10k.json") dataset
|
从pandas加载
1 2 3 4
| import pandas as pd data = pd.read_csv("./waimai_10k.csv") dataset = Dataset.from_pandas(data)
|
从其他方式加载
官方支持从如下方式加载,如有需要,可以查阅资料。
1 2 3 4 5 6 7 8 9 10 11 12
| def from_file() def from_buffer() def from_pandas() def from_dict() def from_list() def from_csv() def from_generator() def from_json() def from_parquet() def from_text() def from_spark() def from_sql()
|
自定义脚本加载
可以自己写一个继承datasets.GeneratorBasedBuilder 的类文件,就可以进行自己加载了。
四、操作数据集
查看数据集
1 2 3 4 5 6 7 8 9 10
| datasets = load_dataset("csv", data_files="./waimai_10k.csv")
datasets["train"][0]
datasets["train"].column_names
datasets["train"].features
|
拆分数据集
把数据集按照一定规则进行拆分,形成训练集,测试集
1 2 3 4 5 6 7 8
| datasets = load_dataset("csv", data_files="./waimai_10k.csv")
dataset = load_dataset("csv", data_files="./waimai_10k.csv", split="train[:100]")
dataset = load_dataset("csv", data_files="./waimai_10k.csv",, split=["train[:50%]")
|
划分数据集
1
| datasets = load_dataset("shibing624/snli-zh")
|
这是划分前数据集,只有训练集
1 2 3 4 5 6
| DatasetDict({ train: Dataset({ features: ['premise', 'hypothesis', 'label'], num_rows: 419402 }) })
|
按比例划分一个测试集
1 2
| dataset = datasets["train"] datasets.train_test_split(test_size=0.5)
|
划分后
1 2 3 4 5 6 7 8 9 10
| DatasetDict({ train: Dataset({ features: ['premise', 'hypothesis', 'label'], num_rows: 377461 }) test: Dataset({ features: ['premise', 'hypothesis', 'label'], num_rows: 41941 }) })
|
保存数据集
1 2 3 4 5
| datasets.save_to_disk("./processed_data")
processed_datasets = load_from_disk("./processed_data")
|