在学习机器学习的时候,我们遇到的数据集大多是类别平衡的,即数据集中各个类的样本数都
很接近。但是实际问题中我们遇到的大部分数据集都是不均衡的。常用的处理方法如下:
- 对数据进行预处理,进行欠采样或者过采样等处理,使数据分布较为均衡。
- 对算法进行改进,使其对少数类更加敏感。
python提供了就是一个处理不均衡数据的imblearn库;其基于机器学习常用sklearn开发而
成,使用方法和sklearn库十分相似,上手非常容易。imblearn库对不平衡数据的主要处理方法主
要分为如下四种:
- 欠采样
- 过采样
- 联合采样
- 集成采样
包含了各种常用的不平衡数据处理方法,例如:随机过采样,SMOTE及其变形方法,tom-
links欠采样,编辑最近邻欠采样方法等等。
使用方法也很简单,下述代码就是使用随机欠采样方法平衡数据集,其他方法也类似。
from
上图右一为原始数据集,右三为使用随机欠采样方法处理得到的数据集。
imblearn也提供了用户手册:3. Under-sampling。可以方便的查看其中内置的各种函数的
使用方法及其原理,同时每种算法的说明下面还提供了对应的论文地址。不过现在还没有汉化
的用户手册。
最后安装imblearn库的方法也很简单
pip3 install imbalanced-learn
成功之后就能在python中导入imblearn包。
imblearn的源代码地址如下,想深入研究的同学门可以clone下来自己深入研究:
https://github.com/scikit-learn-contrib/imbalanced-learngithub.com