20201125

当多数类和少数类数量相差太大的时候,少数类不一定要补充到和多数类数量一致

最好的办法就是全部过采样到最大记录数的类别

调参
SMOTE:只是过采样
SMOTEENN:过采样的同时欠采样

要调ENN的参数,先在前面import

https://blog.csdn.net/Li_yi_chao/article/details/94630920
Borderline-SMOTE 过程
https://blog.csdn.net/weixin_37801695/article/details/86243998

https://www.cnblogs.com/massquantity/p/9382710.html

https://www.cnblogs.com/Determined22/p/5772538.html
SMOTE的详细过程
重点

https://www.cnblogs.com/massquantity/p/9382710.html

https://blog.csdn.net/weixin_37801695/article/details/86243998

  1. Border-line SMOTE
    这个算法会先将所有的少数类样本分成三类,如下图所示:

“noise” : 所有的k近邻个样本都属于多数类
“danger” : 超过一半的k近邻样本属于多数类
“safe”: 超过一半的k近邻样本属于少数类

其k近邻是和所有的样本数据计算吗?

https://blog.csdn.net/a358463121/article/details/52304670
重点

https://juejin.im/post/5e181578f265da3e1e0567c6#heading-27
重点 源码

https://juejin.im/post/5e181578f265da3e1e0567c6

https://www.cnblogs.com/massquantity/p/9382710.html

https://www.cnblogs.com/43726581Gavin/archive/2018/05/16/9043993.html

https://imbalanced-learn.readthedocs.io/en/stable/generated/imblearn.combine.SMOTEENN.html
API 地址

sampling_type:
The type of sampling. Can be either 'over-sampling',
'under-sampling', or 'clean-sampling'.

sampling_strategy

imblearn.over_sampling.SMOTE(
sampling_strategy = ‘auto’,
random_state = None, ## 随机器设定
k_neighbors = 5, ## 用相近的 5 个样本(中的一个)生成正样本
m_neighbors = 10, ## 当使用 kind={‘borderline1’, ‘borderline2’, ‘svm’}
out_step = ‘0.5’, ## 当使用kind = ‘svm’
kind = ‘regular’, ## 随机选取少数类的样本
– borderline1: 最近邻中的随机样本b与该少数类样本a来自于不同的类
– borderline2: 随机样本b可以是属于任何一个类的样本;
– svm:使用支持向量机分类器产生支持向量然后再生成新的少数类样本
svm_estimator = SVC(), ## svm 分类器的选取
n_jobs = 1, ## 使用的例程数,为-1时使用全部CPU
ratio=None
)

https://blog.csdn.net/yeziyezi1986/article/details/103202012

https://zhuanlan.zhihu.com/p/81857985

网上关于数据不平衡处理的讨论有很多,大致来说,数据不平衡的处理方法有三种:一是欠采样,二是过采样,三是调整权重。

今天要说的是过采样中的一个算法SMOTE。在网上找到一个Python库imbalance-learn package 。它是专门用来处理数据不平衡的,网址在这:https://pypi.python.org/pypi/imbalanced-learn#id27
安装说明安装之后就可以使用了,下面是一个简单的例子:

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.decomposition import PCA
import numpy as np
import pandas as pdfrom imblearn.combine import SMOTEENNprint(__doc__)# Generate the dataset
X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9],n_informative=3, n_redundant=1, flip_y=0,n_features=20, n_clusters_per_class=1,n_samples=100, random_state=10)print(y)
print(y.shape)
sm = SMOTEENN()
X_resampled, y_resampled = sm.fit_sample(X, y)
print(y_resampled)
print(y_resampled.shape)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出为:

[1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1]
(100,)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
(177,)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

可见,该算法将标签为0的样本扩展多了77个。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200409090434964.jpg)

机器学习数据不平衡不均衡处理之SMOTE算法实现相关推荐

  1. 数据预处理与特征工程—1.不均衡样本集采样—SMOTE算法与ADASYN算法

    文章目录 一.第一种思路:平衡采样 1.SMOTE算法 2.SMOTE与RandomUnderSampler进行结合 3.Borderline-SMOTE与SVMSMOTE 4.ADASYN 5.平衡 ...

  2. SMOTE算法代码实现-机器学习

    类别不平衡问题 类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题.例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问 ...

  3. python使用imbalanced-learn的SMOTE方法进行上采样处理数据不平衡问题

    python使用imbalanced-learn的SMOTE方法进行上采样处理数据不平衡问题 机器学习中常常会遇到数据的类别不平衡(class imbalance),也叫数据偏斜(class skew ...

  4. 如何解决机器学习中数据不平衡问题

    作者:无影随想  时间:2016年1月.  出处:https://zhaokv.com/machine_learning/2016/01/learning-from-imbalanced-data.h ...

  5. 如何解决机器学习中数据不平衡问题(转)

    作者:无影随想  时间:2016年1月.  出处:http://www.zhaokv.com/2016/01/learning-from-imbalanced-data.html 这几年来,机器学习和 ...

  6. 机器学习数据不均衡处理教程

    机器学习数据不均衡处理教程 学习对数据进行过采样和欠采样.应用 SMOTE.集成方法和成本敏感型学习假设 课程英文名:Machine Learning with Imbalanced Data 此视频 ...

  7. 从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 2017年08月01日 17:09:03 标签: 机器学习 / 数据 719 转自:http://www.sohu.com/a/12

    从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 2017年08月01日 17:09:03 标签: 机器学习 / 数据 719 转自:http://www.sohu.com/a/1293 ...

  8. 【机器学习】数据不平衡问题都怎么解?

    作者 | Chilia 整理 | NewBeeNLP 本文主要讨论两种不平衡问题. 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击; 二是由于误分 ...

  9. 机器学习(二十四)——数据不平衡问题, 强化学习

    https://antkillerfarm.github.io/ 数据不平衡问题 https://mp.weixin.qq.com/s/e0jXXCIhbaZz7xaCZl-YmA 如何处理不均衡数据 ...

最新文章

  1. Depth by Poking:从自监督抓取学习深度估计
  2. java redisson_Java使用Redisson分布式锁实现原理
  3. 二叉堆详解实现优先级队列
  4. HDU-4902-Nice boat
  5. Navigation execution entry point
  6. ios34---GDC,dispatch_once
  7. asp.net ajax检查用户名是否存在代码
  8. 天猫整站SSM-分页-limit(做个人学习笔记整理用)
  9. 织梦响应式教育机构官网网站模板
  10. 新SQL Server 2016示例数据库
  11. mac gcc安装_16_超级小白Mac Pro下安装superset遇见的坑
  12. Linux 下安装JDK1.8
  13. Hystrix dashbord 服务降级熔断限流监控介绍
  14. java 快速创建map_快速创建Map并初始化,超级简单
  15. java获取动态输入_java-如何在Spring中以bean形式接收动态生成的输入值
  16. OpenCasCade标注显示类(独立)
  17. android高效视频压缩代码,Android视频压缩的示例代码
  18. 郑州大学linux安装锐捷客户端
  19. MySQL子查询(嵌套查询)-----详细
  20. 关于微信小程序认证问题

热门文章

  1. 使用JS/Jquery获得父窗口的几个方法(笔记)
  2. mount 挂载磁盘报错 mount: wrong fs type, bad option, bad superblock on
  3. 2022-2028年中国动力锂电池用橡胶密封件行业研究及前瞻分析报告
  4. 简述Web程序开发流程
  5. Pytorch 多 GPU 并行处理机制
  6. LeetCode简单题之唯一元素的和
  7. AI框架外部用户贡献代码
  8. 适用于AMD ROC GPU的Numba概述
  9. Java基础Switch和循环控制
  10. PHP7.3中fileinfo怎么安装与开启