我们在处理医疗诊断等问题,会遇到不平衡数据,即病人的数据量相对于正常人的数据量要小的多。而大多数机器学习算法需要较为平衡的数据。如果不对不平衡数据处理,往往会导致模型向majority class方向偏移。在Python中,有个很好用的库imbalanced-learn——imblearn.在本博文,只借鉴论文进行关键点总结。
参考
先放参考,后文是我在阅读参考资料时整理的笔记,因此难免疏漏.
论文网址
Github
文档
实现的采样方法
- Under-sampling:即下采样,减少多数样本的数量;
- Over-sampling:即上采样,生成少数样本;
- Over-sampling followed by under-sampling:先上采样再下采样,防止过拟合;
- Ensemble classifier using samplers internally:集成学习的方法.
win10安装
pip install imblearn
- 依赖:numpy, scipy, scikit-learn
使用方式
与sklearn相似,主要是fit和fit_resample.论文中给出的一个例子为:
from sklearn.datasets import make_classification
from sklearn.decomposition import PCA
from imblearn.over_sampling import SMOTE
x, y = make_classification(n_classes=2,weights=[0,1,0.9],
n_features=20,n_samples=5000)
sm = SMOTE(ratio='auto', kind='regular')
X_resampled, y_resampled = sm.fit_resample(X,y)
samplers的调用方法
estimator = obj.fit(data, target)
data_resampled, target_resampled = obj.fit_resample(data, targets)
可以接受的input数据格式:
data: array-like (2-D list, pandas.Dataframe or numpy.array) or sparse
matrices targets: array-like(1-D list, pandas.Serise, numpy.array)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)