机器学习数据不平衡不均衡处理之SMOTE算法实现
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
- 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.不均衡样本集采样—SMOTE算法与ADASYN算法
文章目录 一.第一种思路:平衡采样 1.SMOTE算法 2.SMOTE与RandomUnderSampler进行结合 3.Borderline-SMOTE与SVMSMOTE 4.ADASYN 5.平衡 ...
- SMOTE算法代码实现-机器学习
类别不平衡问题 类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题.例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问 ...
- python使用imbalanced-learn的SMOTE方法进行上采样处理数据不平衡问题
python使用imbalanced-learn的SMOTE方法进行上采样处理数据不平衡问题 机器学习中常常会遇到数据的类别不平衡(class imbalance),也叫数据偏斜(class skew ...
- 如何解决机器学习中数据不平衡问题
作者:无影随想 时间:2016年1月. 出处:https://zhaokv.com/machine_learning/2016/01/learning-from-imbalanced-data.h ...
- 如何解决机器学习中数据不平衡问题(转)
作者:无影随想 时间:2016年1月. 出处:http://www.zhaokv.com/2016/01/learning-from-imbalanced-data.html 这几年来,机器学习和 ...
- 机器学习数据不均衡处理教程
机器学习数据不均衡处理教程 学习对数据进行过采样和欠采样.应用 SMOTE.集成方法和成本敏感型学习假设 课程英文名:Machine Learning with Imbalanced Data 此视频 ...
- 从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 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 ...
- 【机器学习】数据不平衡问题都怎么解?
作者 | Chilia 整理 | NewBeeNLP 本文主要讨论两种不平衡问题. 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击; 二是由于误分 ...
- 机器学习(二十四)——数据不平衡问题, 强化学习
https://antkillerfarm.github.io/ 数据不平衡问题 https://mp.weixin.qq.com/s/e0jXXCIhbaZz7xaCZl-YmA 如何处理不均衡数据 ...
最新文章
- Depth by Poking:从自监督抓取学习深度估计
- java redisson_Java使用Redisson分布式锁实现原理
- 二叉堆详解实现优先级队列
- HDU-4902-Nice boat
- Navigation execution entry point
- ios34---GDC,dispatch_once
- asp.net ajax检查用户名是否存在代码
- 天猫整站SSM-分页-limit(做个人学习笔记整理用)
- 织梦响应式教育机构官网网站模板
- 新SQL Server 2016示例数据库
- mac gcc安装_16_超级小白Mac Pro下安装superset遇见的坑
- Linux 下安装JDK1.8
- Hystrix dashbord 服务降级熔断限流监控介绍
- java 快速创建map_快速创建Map并初始化,超级简单
- java获取动态输入_java-如何在Spring中以bean形式接收动态生成的输入值
- OpenCasCade标注显示类(独立)
- android高效视频压缩代码,Android视频压缩的示例代码
- 郑州大学linux安装锐捷客户端
- MySQL子查询(嵌套查询)-----详细
- 关于微信小程序认证问题