机器学习笔记 - 微型不平衡数据集的处理思路参考

一、简述

        训练机器学习模型或神经网络时,如果希望得到表现良好的模型,那么对于数据集的深入了解则至关重要。

        举一个例子:如果我们要在马和驴子之间进行分类,包含马匹的照片中有雪,而包含驴子的照片中没有雪。模型就很可能会学会根据雪的存在进行分类。这偏离了我们的预期。

        另外,如果数据集不平衡,很可能也难以训练出一个表现良好的模型。如果有两个类别,那么显而易见平衡的数据意味着每个类各占50%的数量。

        假设我们有一个数据集分两个类别,其中一个类别a有3000条数据,而另一个类别b只有300条数据。那么模型可能会学习以下行为:简单地将a作为预测的输出,因为这样输出准确率也非常高了。

        这种不平衡的数据集十分常见,比如在很多工业缺陷检测场景中,某些罕见的缺陷很难收集但又很重要,不平衡的数据集就产生了。为了解决问题然后拿到薪水,所以我们需要对于这种不平衡的数据集进行处理。

二、数据处理

        我们可以通过多种方式处理不平衡的数据集:

        随机欠采样:从原始数据集中抽取一个子集,确保每个类的数量相等,丢弃了许多大量的类样本。

import pandas as pd

# Read CSV
df = pd.read_csv('./data.csv')

# Count samples per class
classes_zero = df[df['Response'] == 0]
classes_one = df[df['Response'] == 1]

# Print sizes
print(f'Class 0: {len(cla

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/130734865