栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

SMOTE过采样处理数据不均衡的python实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SMOTE过采样处理数据不均衡的python实现

在机器学习二分类问题中,一般两类比例超过4:1或3:1时,其数据就不均衡了。本文使用SMOTE(Synthetic Minority Oversampling TEchnique)方法人工生成小类数据,其类似于最近邻算法。

from imblearn.over_sampling import SMOTE
from collections import Counter

#分离标签与数据
x = train[train.columns[1:]]
y = train['label']
#查看各类数目
print("初始样本中各类数目为:{}".format(Counter(y)))
#SMOTE过采样
smo = SMOTE(random_state=42)
x_smo, y_smo = smo.fit_resample(x, y)
data_train = pd.concat([y_smo, x_smo], axis=1) #最终测试集
#打印结果
print("过采样后各类数目为:{}".format(Counter(y_smo)))

输出结果为:

初始样本中各类数目为:Counter({0: 83, 1: 32})
过采样后各类数目为:Counter({0: 83, 1: 83})

说一句题外话,从某处看到了觉得很有趣:为什么大家总喜欢将随机数定为42?
因为42是道格拉斯·亚当斯所作的小说《银河系漫游指南》中“生命、宇宙以及任何事情的终极答案”的答案,由于该作品的广泛流传,而成为在其他行业借此对该作品的致敬。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号