平时很多分类问题都会面对样本不均衡的问题,很多算法在这种情况下分类效果都不够理想。针对不均衡问题,一般有采样和代价敏感学习两种策略,采样的话又分为over-sampling和under-sampling。其中,smote算法算是over-sampling中比较常用的一种。

smote算法的思想是合成新的少数类样本,合成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。 
论文地址:https://www.jair.org/media/953/live-953-2037-jair.pdf 
下图是论文中给出的smote伪代码。

#encoding=gbk
from sklearn.neighbors import NearestNeighbors
import numpy as np
import random
class Smote:#samples的最后一列是类标,都是1def __init__(self, samples, N=10,k=5):self.n_samples, self.n_attrs=samples.shapeself.N=Nself.k=kself.samples=samplesdef over_sampling(self):if self.N<100:old_n_samples=self.n_samplesprint "old_n_samples", old_n_samplesself.n_samples=int(float(self.N)/100*old_n_samples)print "n_samples", self.n_sampleskeep=np.random.permutation(old_n_samples)[:self.n_samples]print "keep", keepnew_samples=self.samples[keep]print "new_samples", new_samplesself.samples=new_samplesprint "self.samples", self.samplesself.N=100N=int(self.N/100) #每个少数类样本应该合成的新样本个数self.synthetic=np.zeros((self.n_samples*N, self.n_attrs))self.new_index=0neighbors=NearestNeighbors(n_neighbors=self.k).fit(self.samples)print "neighbors", neighborsfor i in range(len(self.samples)):nnarray=neighbors.kneighbors(self.samples[i],return_distance=False)[0]#存储k个近邻的下标self.__populate(N, i, nnarray )return self.synthetic#从k个邻居中随机选取N次,生成N个合成的样本def __populate(self, N, i, nnarray):for i in range(N):nn = np.random.randint(0, self.k)dif=self.samples[nnarray[nn]]-self.samples[i]    #包含类标gap=np.random.rand(1,self.n_attrs)self.synthetic[self.new_index]=self.samples[i]+gap.flatten()*difself.new_index+=1

smote算法 不平衡数据集处理方法相关推荐

  1. 不平衡数据集处理方法

    目录 1.不平衡(均衡)数据集 (1)不平衡数据集定义 (2)不平衡数据集举例 (3)不平衡数据集实例 (4)不平衡数据集导致的问题 (5)不平衡数据集的主要处理方法 2.不平衡(均衡)数据集常用的处 ...

  2. smoteenn算法_基于EasyEnsemble算法和SMOTE算法的不均衡数据分类方法与流程

    本发明涉及不均衡数据二分类技术领域,尤其涉及一种基于EasyEnsemble算法和SMOTE算法的不均衡数据二分类方法. 背景技术: 数据不均衡指的是在一个样本数据集中,某一类的样本数远少于其他类的样 ...

  3. 机器学习数据不平衡不均衡处理之SMOTE算法实现

    20201125 当多数类和少数类数量相差太大的时候,少数类不一定要补充到和多数类数量一致 最好的办法就是全部过采样到最大记录数的类别 调参 SMOTE:只是过采样 SMOTEENN:过采样的同时欠采 ...

  4. 不平衡数据集评价指标及常用解决方法

    1.不平衡数据集的评估指标有哪些? 评估指标1:recall,Precision,F-score,其中F-score是两者的中和,一般认为F-measure越高,分类器的性能越好: Precision ...

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

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

  6. python过采样代码实现_过采样中用到的SMOTE算法

    平时很多分类问题都会面对样本不均衡的问题,很多算法在这种情况下分类效果都不够理想.类不平衡(class-imbalance)是指在训练分类器中所使用的训练集的类别分布不均.比如说一个二分类问题,100 ...

  7. Python:SMOTE算法——样本不均衡时候生成新样本的算法

    Python:SMOTE算法 直接用python的库, imbalanced-learn imbalanced-learn is a python package offering a number ...

  8. 当常规的算法都山穷水尽之后,你可以试试python中的SMOTE算法

    点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 沙韬伟,苏宁易购高级算法工程师. 曾任职于Hewlett-Packard.滴滴出行. 数据学院特邀讲师. ...

  9. 数据安全分类分级实施指南_不平衡数据集分类指南

    数据安全分类分级实施指南 重点 (Top highlight) Balance within the imbalance to balance what's imbalanced - Amadou J ...

  10. 解决类别不平衡问题的方法综述

    一.数据不平衡 1.1 什么是数据不平衡 在学术研究与教学中,很多算法都有一个基本假设,那就是数据分布是均匀的.当我们把这些算法直接应用于实际数据时,大多数情况下都无法取得理想的结果.因为实际数据往往 ...

最新文章

  1. ubuntu下 mysql数据 自执行备份
  2. java 左边补0_java基础知识
  3. 山西财经大学计算机考试题及答案,2018年山西财经大学计算机应用技术408计算机学科专业基础综合之计算机操作系统考研基础五套测试题...
  4. codeforces:65
  5. [MEGA DEAL] Java编程-硕士课程(85%折扣)
  6. js bom and dom
  7. LeetCode 2114. 句子中的最多单词数
  8. 从 0 到 70%:Chrome 上位揭秘!
  9. java集合(一):List、Iterator、Array、ArrayList、LinkList
  10. XP系统装python
  11. PLC控制系统设计的基本内容
  12. 横图图片广告代码html,jQuery网页底部固定横幅图片广告代码
  13. 【TWVRP】蚁群算法求解带时间窗的车辆路径规划问题【含Matlab源码 921期】
  14. #455 科技乱炖:看完《流浪地球2》,我们为行星发动机设计了网络架构
  15. packet tracer配置ssh、telnet
  16. 燕东微在科创板上市:市值263亿元,北京电控、亦庄国投等为股东
  17. 渐变:线性渐变、径向渐变
  18. python图像融合算法_图像融合质量评价方法的python代码实现——MS-SSIM
  19. 吴恩达机器学习笔记第一周
  20. C51与4*4矩阵键盘

热门文章

  1. 《数据结构与抽象:Java语言描述(原书第4版)》一第2章
  2. Chrome快捷键, Mac 下 Chrome 浏览器 快捷键
  3. Docker存储驱动之总览
  4. XCode6自定义pch文件
  5. 知识管理是一门很深的学问
  6. 在演示文稿中控制视频播放效果
  7. fpt指的是什么_ftp是指的什么?
  8. andpods授权码订单号分享_Axure 9.0学生免费授权申请详细步骤
  9. 动物统计加强版 nyoj290
  10. sql将null替换为0_Firefox浏览器将被认为包含歧视性的 Master字眼替换为 Primary