码迷,mamicode.com
首页 > 其他好文 > 详细

数据预处理-非平衡样本的处理方式(SMOTE--待补充)

时间:2020-02-21 00:15:51      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:观测   信息   比赛   采样   int   class   业务   很多   str   

     一.一般经验

     1. 1:20以上是需要做均衡处理的 ,普通数据召回率低的话1:10就可以做均衡处理  

      2. 一般如果不是严重不平衡,或者不平衡既是业务的正常反应,则不需要做处理,非平衡样本的处理方式不是必须的

      3. 多分类样本不均衡,只能过采样处理 (一般实验或比赛数据才会过采样处理, 一般不会过采样处理, 因为会有很多问题.)

    二.处理方法

1. 过采样:增加少数样本的个数,容易过拟合 用原始数据增加样本
2. 欠采样:减少多数样本的个数,容易丢失多数类的重要信息,容易欠拟合
3. SMOTE算法,合并少数类过采样技术 KNN近邻 增加的不是原始样本也不是真实的样本

三.SMOTE-只针对二分类模型

SMOTE算法步骤:
1. 随机找一个少数类的观测点
2. 用KNN计算观测点最近的样本
3. 随机挑选离观测点近邻的其中一个样本
4. 计算两点的差值后进行随机提取。所以这里的随机体现在两个方面,线性体现在求差值的运算上面。

# pip install imblearn

 

# 做平衡处理
from imblearn.over_sampling import SMOTE

# 实例化
over_samples = SMOTE(random_state=1234)

# fit数据结构
over_samples_x,over_samples_y = over_samples.fit_sample(Xtrain,Ytrain)
over_test_x,over_test_y = over_samples.fit_sample(Xtest,Ytest)   

# 重采样之后的比例
print(pd.Series(over_samples_y).value_counts()/len(over_samples_y))

# 重采样之前的比例
print(Ytrain.value_counts()/len(Ytrain))

 

数据预处理-非平衡样本的处理方式(SMOTE--待补充)

标签:观测   信息   比赛   采样   int   class   业务   很多   str   

原文地址:https://www.cnblogs.com/jing-yan/p/12337912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!