python过采样fit参数_Python中试验非平衡数据采样SMOTE算法

原标题:Python中试验非平衡数据采样SMOTE算法

点击图片,查看Python爬虫教学大纲

在大数据分类问题中,许多情况下我们能获得样本数量很有限,特别是在异常检测、欺诈检测等实际问题中,异常类的样本相比于正常类要少得多,从而产生了典型的非平衡数据分类问题。

非平衡问题研究得相对比较早,目前的方法总的看来可以在数据层面、分类器层面进行分类效果的改善。基于数据的基本思路是对数据重新平衡,减小类别倾斜带来的影响。

经典的做法是 SMOTE算法,它对小类中的样本进行复制、创造以增加该类中的样本数,或者对多数类进行抽样,使之与少数类样本平衡。这两种思路分别对应于过采样、欠采样。

SMOTE算法的实现并不难,在Python中有现成的包 imblearn可以使用。但是该算法的变体很多,改进的思路也很多。有必要了解Python包所能支持的采样。

安装imblearn

pip install imblearn

使用:import

# 欠抽样处理库RandomUnderSampler

from imblearn.under_sampling import RandomUnderSampler

# 过抽样处理库RandomOverSampler

from imblearn.over_sampling import RandomOverSampler

from imblearn.over_sampling import SVMSMOTE

#数据集生成器

from sklearn.datasets import make_classification

#生成非平衡的样本数据,为方便展示,x是二维空间的样本,y是类别标签。

from sklearn.datasets import make_classification

x, y = make_classification(n_samples=100, n_features=2, n_informative=2,

n_redundant=0, n_repeated=0, n_classes=2,

n_clusters_per_class=1,

weights=[0.3, 0.7],

class_sep=0.8, random_state=0)

生成30个少数类、70个多数类样本。

过采样

print('过采样')

ros = RandomOverSampler(random_state=42)

nx, ny= ros.fit_sample(x, y)

结果发现该函数进行了重复采样,即简单随机复制现有的少数类样本,不太能满足实际分类器训练的要求。

ros = SVMSMOTE(random_state=42)

nx, ny= ros.fit_sample(x, y)

这个函数能生成新的少数类样本。

欠采样

print('欠采样')

rus = RandomUnderSampler(random_state=0)

nx, ny= rus.fit_sample(x, y)

此为欠采样,即减少多数类的样本数,使之和少数类数量相同。

关于其他采样方法可以查阅imblearn的文档。

提供300分钟视频讲解,教学大纲、课件、教案、习题答案、程序源码等配套资源。

扫码,优惠购书

凡是在京东购书的用户,可以将订单信息和评价发到itbook8@163.com,将会获取超值大礼包(包括案例源码,超多的视频教程,数据集等资源)

“ 在看”的永远18岁~ 返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值