所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。

本文主要介绍从数据角度出发的不平衡数据集的处理方法以及对应的python库(imblearn)。

1.过采样

从少数类的样本中进行随机采样来增加新的样本,对应Python库中函数为RandomOverSampler:

from imblearn.over_sampling import RandomOverSampler

ROS = RandomOverSampler(random_state=0)

X_resampled, y_resampled = ROS.fit_sample(X, y)

2.欠采样

与过采样相反,欠采样是从多数类样本中随机选择少量样本,再合并原有少数类样本作为新的训练数据集。

随机欠采样有两种类型分别为有放回和无放回两种,无放回欠采样在对多数类某样本被采样后不会再被重复采样,有放回采样则有可能。

对应Python库中函数为RandomUnderSampler,通过设置RandomUnderSampler中的replacement=True参数, 可以实现自助法(boostrap)抽样。

from imblearn.under_sampling import RandomUnderSampler

RUS = RandomUnderSampler(random_state=0)

X_resampled, y_resampled = RUS.fit_sample(X, y)

3.SMOTE采样

SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体下图所示,算法流程如下:

1、对于少数类中每一个样本x,计算该点与少数类中其他样本点的距离,得到最近的k个近邻(即对少数类点进行KNN算法)。

2、根据样本不平衡比例设置一个采样比例以确定采样倍率,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为x'。

3、对于每一个随机选出的近邻x',分别与原样本按照如下的公式构建新的样本:

xnew=x+rand(0,1) ∗ (x′−x)

但是SMOTE算法缺点也十分明显:一方面是增加了类之间重叠的可能性(由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠(Overlapping)的问题),

另一方面是生成一些没有提供有益信息的样本

对应Python库中函数为SMOTE:

from imblearn.over_sampling import SMOTE

X_resampled_smote, y_resampled_smote = SMOTE().fit_sample(X, y)

python坐标系不均匀_Python处理不平衡数据相关推荐

  1. python正态检验_Python怎么检验数据的正态分布

    在对数据建模前,很多时候我们需要对数据做正态性检验,进而通过检验结果确定下一步的分析方案.下面介绍 Python 中常用的几种正态性检验方法: scipy.stats.kstest kstest 是一 ...

  2. python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本

    MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到Mong ...

  3. python雷达和柱形图_Python Pygal常见数据图(折线图、柱状图、饼图、点图、仪表图和雷达图)详解...

    Pygal 同样支持各种不同的数据图,比如饼图.折线图等.Pygal 的设计很好,不管是创建哪种数据图,Pygal 的创建方式基本是一样的,都是先创建对应的数据图对象,然后添加数据,最后对数据图进行配 ...

  4. python序列化和反序列化_Python 中 json 数据序列化和反序列化

    1.Json 定义 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.JSON 的数据格式其实就是 python 里面的字典格式,里 ...

  5. python nonetype报错_python 查询数据库数据 NoneType报错

    python调试mysql数据库时,在测试单条查询语句的时候是没有问题的. 执行过程如下: 1.由连接对象conn获取到一个cursor. cur = conn.cursor() 2.执行sql语句. ...

  6. python数据分析简答题_Python数据分析与数据可视化-中国大学mooc-试题题目及答案...

    Python数据分析与数据可视化-中国大学mooc-试题题目及答案 更多相关问题 [简答题]城轨供电系统按功能划分为几部分?各有什么作用? [多选题]影响债券价格的因素有 [单选题]关于注射剂的质量要 ...

  7. python json数组解析_Python读取JSON数据操作实例解析

    问题 你想读写 JSON(JavaScript Object Notation) 编码格式的数据. 解决方案 json模块提供给了一种很简单的方式来编码和解码json数据,其中两个主要的函数时json ...

  8. python excel word模板_Python将Excel数据插入Word模板生成详细内容文档

    最近在实际工作中遇到的一个情况是,每个月固定时间要报送一批文档,文档的内容相似,有固定的模板,我这么懒的人肯定要想一个一劳永逸的办法.下面把搜索发现的情况记录一下,以备以后需要. Python有个叫做 ...

  9. python爬取内容_Python爬取数据(基础,从0开始)

    1.技术概述 爬虫,就是给网站发起请求,并从响应中提取需要的数据的自动化程序,一般有三个步骤: (1)发起请求,获取响应 (2)解析内容 (3)保存数据 当初学习该技术是因为要做疫情网页,需要准确的疫 ...

最新文章

  1. Object-C 如何把一个时间戳转换为一个标准的时间格式?
  2. 2011年1月1日,开篇,起点。
  3. AOSP 源码整编单编
  4. mysql 从物理文件恢复_从物理文件恢复MySQL数据库
  5. 《C语言及程序设计》实践参考——乘法口诀表
  6. linux cacti 搭建,Cacti搭建部署
  7. PHP多种序列化/反序列化的方法 (转载)
  8. oracle中 sql语句:start with .. connect by prior.. 用法
  9. java实现2-3树_2-3-4树的分裂核心代码【JAVA实现】 | 学步园
  10. 看看老司机是如何提升B端产品架构能力的
  11. linux 常用技巧脚本分享
  12. python读取邮箱邮件_Python读取我的outlook邮箱并分析邮件
  13. 基于javaEE的超市库存管理系统
  14. 《分布式计算云计算与大数据》第一章
  15. 令人担忧的5G网络可被黑客入侵
  16. java中的lt;和gt;分别是什么意思
  17. 书论57 陈绎曾《翰林要诀》
  18. error LNK2019: 无法解析的外部符号 __imp_DeleteObject
  19. some resource favor
  20. windows7 cat ‘t find recovert.data

热门文章

  1. Magento 获取当前货币和货币符How to get current currency in Magento
  2. len()与cap()的区别
  3. Linux rm命令:删除文件或目录
  4. 计算机专业大学四年应该怎么过才有意义?
  5. 当前目标 1614868689
  6. 掌握基本的Java程序开发过程 题库 1213
  7. html基础标签 1211
  8. redis报错解决,MISCONF Redis is configured to save RDB snapshots
  9. Zabbix监控SQLServer TPS
  10. usermod使用方法