HuggingFace学习笔记--datasets的使用

目录

1--datasets的使用

1-1--加载数据集

1-2--查看数据集

1-3--打乱和排序数据集

1-4--选择和筛选数据集

1-5--划分数据集

1-6--修改数据集

1-7--导出数据集


1--datasets的使用

1-1--加载数据集

代码:

python 复制代码
from datasets import load_dataset, load_from_disk

if __name__ == "__main__":
    # 加载数据集
    dataset = load_dataset(path = 'lansinuote/ChnSentiCorp')
    # 保存数据集
    dataset.save_to_disk(dataset_dict_path = './data/ChnSentiCorp')
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    print(dataset)

输出结果:

python 复制代码
DatasetDict({
    train: Dataset({
        features: ['text', 'label'],
        num_rows: 9600
    })
    validation: Dataset({
        features: ['text', 'label'],
        num_rows: 1200
    })
    test: Dataset({
        features: ['text', 'label'],
        num_rows: 1200
    })
})

1-2--查看数据集

代码:

python 复制代码
from datasets import load_from_disk

if __name__ == "__main__":
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    # 取出训练集
    dataset = dataset['train']
    print(dataset)
    print(dataset[0]) # 查看单个样本

输出结果:

python 复制代码
Dataset({
    features: ['text', 'label'],
    num_rows: 9600
})
{'text': '选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 'label': 1}

1-3--打乱和排序数据集

代码:

python 复制代码
from datasets import load_from_disk

if __name__ == "__main__":
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    # 取出训练集
    dataset = dataset['train']
    print(dataset['label'][:10]) # 未排序前是乱序的
    
    # 排序
    sorted_dataset = dataset.sort('label')
    print("sort: ", sorted_dataset['label'][:10])
    print("sort: ", sorted_dataset['label'][-10:])
    
    # 打乱
    shuffled_dataset = sorted_dataset.shuffle(seed = 1) # 设置随机种子打乱
    print("shuffle: ", shuffled_dataset['label'][:10])

输出结果:

python 复制代码
[1, 1, 0, 0, 1, 0, 0, 0, 1, 1]
sort:  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
sort:  [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
shuffle:  [0, 1, 0, 0, 0, 0, 0, 1, 0, 1]

1-4--选择和筛选数据集

代码:

python 复制代码
from datasets import load_dataset, load_from_disk

if __name__ == "__main__":
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    # 取出训练集
    dataset = dataset['train']
    sel_data = dataset.select([0, 10, 20, 30, 40, 50]) # 根据索引选取数据集
    print(sel_data)
    
    # 筛选数据集
    def f(data):
        return data['text'].startswith('选择') # 筛选以选择开头的
    start_with_ar = dataset.filter(f)
    print(len(start_with_ar))
    print(start_with_ar['text'])

输出结果:

python 复制代码
Dataset({
    features: ['text', 'label'],
    num_rows: 6
})
Filter: 100%|█████████████████████████████████████████████████████████████████| 9600/9600 [00:00<00:00, 231601.55 examples/s]
2
['选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', '选择的事例太离奇了,夸大了心理咨询的现实意义,让人失去了信任感!如果说这样写的效果能在一开始抓住读者的眼球,但是看到案例主人公心理问题的原因解释时就逐渐失去了兴趣,反正有点拣了芝麻丢了西瓜的感觉。']

1-5--划分数据集

代码:

python 复制代码
from datasets import load_from_disk

if __name__ == "__main__":
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    # 取出训练集
    dataset = dataset['train']
    print(dataset)
    # 划分数据集
    new_dataset1 = dataset.train_test_split(test_size = 0.1)
    print(new_dataset1)
    
    # 数据集均分到四个桶里,并取第一个桶
    new_dataset2 = dataset.shard(num_shards = 4, index = 0)
    print(new_dataset2)

输出结果:

python 复制代码
# 训练集
Dataset({
    features: ['text', 'label'],
    num_rows: 9600
})
# 训练集按比例划分
DatasetDict({
    train: Dataset({
        features: ['text', 'label'],
        num_rows: 8640
    })
    test: Dataset({
        features: ['text', 'label'],
        num_rows: 960
    })
})
# 第一桶的数据
Dataset({
    features: ['text', 'label'],
    num_rows: 2400
})

1-6--修改数据集

代码:

python 复制代码
from datasets import load_from_disk

if __name__ == "__main__":
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    # 取出训练集
    dataset = dataset['train']
    # 修改列名,将text更改为mytext
    new_dataset1 = dataset.rename_column('text', 'mytext')
    print(new_dataset1)
    # 删除列名
    new_dataset2 = dataset.remove_columns(['text'])
    print(new_dataset2)
    
    # 修改数据
    def f(data):
        data['text'] = 'My sentence: ' + data['text'] # 每一个句子都增加前缀
        return data
    datatset_map = dataset.map(f)
    print(datatset_map['text'][:5]) 

    # 修改类型
    dataset.set_format(type = 'torch', columns = ['label'])
    print(dataset[0])

输出结果:

python 复制代码
# 更改列名
Dataset({
    features: ['mytext', 'label'],
    num_rows: 9600
})
# 删除列
Dataset({
    features: ['label'],
    num_rows: 9600
})
# 修改数据
['My sentence: 选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 
'My sentence: 15.4寸笔记本的键盘确实爽,基本跟台式机差不多了,蛮喜欢数字小键盘,输数字特方便,样子也很美观,做工也相当不错', 
'My sentence: 房间太小。其他的都一般。。。。。。。。。', 
'My sentence: 1.接电源没有几分钟,电源适配器热的不行. 2.摄像头用不起来. 3.机盖的钢琴漆,手不能摸,一摸一个印. 4.硬盘分区不好办.', 
'My sentence: 今天才知道这书还有第6卷,真有点郁闷:为什么同一套书有两种版本呢?当当网是不是该跟出版社商量商量,单独出个第6卷,让我们的孩子不会有所遗憾。']
# 修改类型
{'label': tensor(1)}

1-7--导出数据集

代码:

python 复制代码
from datasets import load_from_disk

if __name__ == "__main__":
    # 从本地加载数据集
    dataset = load_from_disk('./data/ChnSentiCorp')
    # 取出训练集
    dataset = dataset['train']
    # 保存为csv格式
    dataset.to_csv(path_or_buf = './data/ChnSentiCorp.csv')
    # 加载csv格式数据
    csv_dataset = load_dataset(path='csv', data_files='./data/ChnSentiCorp.csv', split='train')
    print(dataset[0])
    print(csv_dataset[0])
    
    # 保存为json格式
    dataset.to_json(path_or_buf = './data/ChnSentiCorp.json')
    # 加载json格式数据
    json_dataset = load_dataset(path='json', data_files='./data/ChnSentiCorp.json', split='train')
    print(dataset[1])
    print(json_dataset[1])

输出结果:

python 复制代码
{'text': '选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 'label': 1}
{'text': '选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 'label': 1}

{'text': '15.4寸笔记本的键盘确实爽,基本跟台式机差不多了,蛮喜欢数字小键盘,输数字特方便,样子也很美观,做工也相当不错', 'label': 1}
{'text': '15.4寸笔记本的键盘确实爽,基本跟台式机差不多了,蛮喜欢数字小键盘,输数字特方便,样子也很美观,做工也相当不错', 'label': 1}
相关推荐
大佬,救命!!!2 小时前
最新的python3.14版本下仿真环境配置深度学习机器学习相关
开发语言·人工智能·python·深度学习·机器学习·学习笔记·环境配置
工业机器视觉设计和实现2 小时前
用caffe做个人脸识别
人工智能·深度学习·caffe
高洁013 小时前
具身智能-普通LLM智能体与具身智能:从语言理解到自主行动 (2)
深度学习·算法·aigc·transformer·知识图谱
AI即插即用5 小时前
即插即用系列 | 2024 SOTA LAM-YOLO : 无人机小目标检测模型
pytorch·深度学习·yolo·目标检测·计算机视觉·视觉检测·无人机
金融小师妹6 小时前
基于机器学习与深度强化学习:非农数据触发AI多因子模型预警!12月降息预期骤降的货币政策预测
大数据·人工智能·深度学习·1024程序员节
brave and determined6 小时前
可编程逻辑器件学习(day29):Verilog HDL可综合代码设计规范与实践指南
深度学习·fpga开发·verilog·fpga·设计规范·硬件编程·嵌入式设计
大雷神16 小时前
HarmonyOS 横竖屏切换与响应式布局实战指南
python·深度学习·harmonyos
青瓷程序设计16 小时前
水果识别系统【最新版】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
AI模块工坊16 小时前
CVPR 即插即用 | 当RetNet遇见ViT:一场来自曼哈顿的注意力革命,中科院刷新SOTA性能榜!
人工智能·深度学习·计算机视觉·transformer
强化学习与机器人控制仿真18 小时前
Meta 最新开源 SAM 3 图像视频可提示分割模型
人工智能·深度学习·神经网络·opencv·目标检测·计算机视觉·目标跟踪