python 解决data imbalance问题(以casia-webface为例)

Method for Data Imbalance

对于分部不均的数据集使用,从而避免long tail distribution。例如CASIA-WebFace
Alt

import os
import random


def list_of_groups(init_list, children_list_len):
    """
    :param init_list: (list) 放想要分割的list
    :param children_list_len: (list)  想要分割成几份
    :return:
    """
    list_of_groups = zip (*(iter (init_list),) * children_list_len)
    end_list = [list (i) for i in list_of_groups]
    count = len (init_list) % children_list_len
    end_list.append (init_list[-count:]) if count != 0 else end_list
    return end_list


def dataset_split(dataset_path, batch_size, select_num):
    """
    :param dataset_path: (str)存放子文件夹的目录
    :param batch_size: (int)同训练时的batch size
    :param select_num: (int)每个文件夹选择的图片个数
    :return: (list)整个数据集处理后的文件路径,list中还有list
    """
    img_name = []  # 文件夹名
    img_num = []  # 文件夹所含图片个数
    train_path_list = []
    for folders in os.listdir (dataset_path):
        img_name.append (folders)
        img_folder = os.path.join (dataset_path, folders)
        img_num.append (len (os.listdir (img_folder)))

    img_name_sep = list_of_groups (img_name, int (batch_size / select_num))
    for combined_img_folders in img_name_sep:
        for single_img_folder in combined_img_folders:
            img_folder_path = os.path.join (dataset_path, single_img_folder)
            img_folder_imgs = os.listdir (img_folder_path)
            if len (img_folder_imgs) > select_num:
                select_img = random.sample (img_folder_imgs, select_num)
                path = [img_folder_path + '/' + i for i in select_img]
                train_path_list.append (path)

            else:

                print ('Folder {} failed to fetch'.format (single_img_folder))

    return (train_path_list)


if __name__ == '__main__':
    casia_folder = r'E:/FaceNet-pytorch/facenet-pytorch--main/datasets/'

    train_path = dataset_split (dataset_path=casia_folder,
                                batch_size=32,
                                select_num=8)

    print(train_path[0])

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
imbalance-X是一种针对不平衡数据集的Matlab工具包。不平衡数据集是指其中一个类别的样本数量明显少于其他类别的数据集。这种情况在现实世界中很常见,例如医学诊断、欺诈检测和罕见事件预测等领域。 imbalance-X通过提供一系列的处理方法和算法,帮助研究人员在不平衡数据集上进行机器学习和数据分析。该工具包的目标是通过平衡不同类别的样本来提高模型的性能和泛化能力。 imbalance-X的主要特点和功能如下: 1. 多种采样方法:imbalance-X包括了多种类别平衡的采样方法,如随机欠采样、随机过采样和SMOTE等。这些方法可以通过增加或减少某个类别的样本数量来平衡数据集。 2. 数据处理技术:imbalance-X提供了一些用于处理不平衡数据集的技术,如正负样本平衡和样本加权等。这些技术可用于调整模型对不同类别的敏感性,使得模型更好地处理不平衡数据集。 3. 模型评估和优化:imbalance-X还包括一些用于评估和优化模型性能的指标和方法。这些方法可以帮助研究人员选择合适的模型和参数,以获得更好的分类效果。 总的来说,imbalance-X是一个方便易用的工具包,可以帮助研究人员有效地处理不平衡数据集,并提高机器学习模型的性能和泛化能力。它为Matlab用户提供了一种快速、简便的方式来解决不平衡数据问题,推动了不平衡数据分析领域的研究和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值