目录

  • 正负样本比率失衡SMOTE

    • 背景
    • 公式
    • python实现
    • 代码的使用方法

正负样本比率失衡SMOTE

背景

这几天测试天池的优惠券预测数据在dnn上面会不会比集成树有较好的效果,但是正负样本差距太大,而处理这种情况的一般有欠抽样和过抽样,这里主要讲过抽样,过抽样有一种简单的方法叫随机过抽样,但是随机过抽样只是随机的复制,很容易过拟合,所以SMOTE比较好,SMOTE还有一些改进版本,更好用,这里讲一般的SMOTE即可

公式

\(x\) : 任意一个样本
\(\tilde{x}\) : \(x\)最临近的\(K\)个样本的随机一个,\(x\not= \tilde{x}\)
\[ x_{new}=x+rand(0,1)\times(\tilde{x}-x) \]

python实现

import random
from sklearn.neighbors import NearestNeighbors
import numpy as np
class Smote:def __init__(self,N=1,k=5):self.__shape=Noneself.__N=Nself.__k=kdef fit(self, samples):self.__shape=samples.shape #源样本的shape# 塑形为两位度才可以用KNNself.__samples=samples.reshape((self.__shape[0],-1)) self.__tmp_shape=self.__samples.shape# 返回值的维度self.__ret_shape=(self.__shape[0]*self.__N,)+self.__shape[1:]def transform(self):# 如果没有喂给数据,则直接返回Noneif self.__shape == None:return Noneself.__index=0 # 清零新增数据的索引self.__X = np.zeros((self.__tmp_shape[0] * self.__N, self.__tmp_shape[1])) # 构造返回的数据,具体数据待填充neighbors=NearestNeighbors(n_neighbors=self.__k).fit(self.__samples)for i in range(self.__shape[0]): # 根据每一个样本产生一个新样本# nnarray当前样本最近k个的样本的索引nnarray=neighbors.kneighbors(self.__samples[i].reshape(1,-1),return_distance=False)[0]# 根据当前样本索引和,最近k和样本生成一个新样本self.__new_one_sample(i,nnarray)return self.__X.reshape(self.__ret_shape) # 重新塑形并返回def fit_transform(self, samples):self.fit(samples)return self.transform()# 根据当前样本索引和,最近k和样本生成一个新样本def __new_one_sample(self,i,nnarray):for _ in range(self.__N):#从K个最近的样本随机挑选不同于当前样本的一个样本nn_idx=random.choice(nnarray)while (nn_idx==i):nn_idx=random.choice(nnarray)gap=self.__samples[nn_idx]-self.__samples[i]prob=random.random()# 根据公式生成新样本self.__X[self.__index]=self.__samples[i]+prob*gapself.__index+=1if __name__ == '__main__':a=np.array([[1,3,4],[2,5,6],[4,1,2],[5,1,4],[3,2,4],[5,3,5]])print("\n"*2, "测试维度为" , a.shape)print("*"*100)s=Smote()s.fit(a)print (s.transform())# 测试多维度支持b=np.zeros((10,)+a.shape)print("\n"*2, "测试维度为" , b.shape)print("*"*100)for i in range(10):b[i,:]=s.fit_transform(a)print (s.fit_transform(b))

代码的使用方法

假设你已经有label很少的数据 data (不包括label列)

s=Smote()
s.fit(data)
s.transform()

上面的实例是默认参数,可根据情况选择参数N和k
数据扩增N被,从最近的k个样本选择一个样本参考(这里 参考 这个词可能不太准确,想不出其他词)来生成样本

s=Smote(N=2, k=4)
s.fit(data)
s.transform()

转载于:https://www.cnblogs.com/paiandlu/p/8081763.html

正负样本比率失衡SMOTE相关推荐

  1. python样本不均衡_使用Python中的smote处理正负样本之间的不平衡,python,实现,失衡,问题...

    机器学习中难免遇到正负样本不平衡问题,处理办法通常有梁总,一:过采样,增加正样本数据:二:欠采样,减少负样本数据,缺点是会丢失一些重要信息.smote属于过采样. 代码 # from imblearn ...

  2. 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

    目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...

  3. 关于正负样本不平衡问题的解决方法收集整理

    参考文献 1.如何解决机器学习中数据不平衡问题 2.Learning from imbalanced data 原文 3.对于正负样本不均衡的解决方法 4.2中论文的翻译总结 一. 问题背分析 1.背 ...

  4. 正负样本不均衡的解决办法

    转载自:http://blog.csdn.net/lujiandong1/article/details/52658675 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时, ...

  5. 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用

    如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...

  6. 人脸检测流程及正负样本下载

    源地址:http://www.thinkface.cn/thread-146-1-4.html 人脸检测做训练当然可以用OpenCV训练好的xml,但是岂止于此.我们也要动手做!~ 首先是样本的选取. ...

  7. 【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本

    本文转自|AI公园 导读 又一篇anchor匹配策略的文章,不过确实是简单有效,在ATSS上只需要很小的修改就可以提升性能.GFL2在框的预测上用上了概率分布,这里又在anchor匹配上用上了概率分布 ...

  8. ML之LoR:利用LoR二分类之非线性决策算法案例应用之划分正负样本

    ML之LoR:利用LoR二分类之非线性决策算法案例应用之划分正负样本 目录 输出结果 实现代码 输出结果 1.对数据集进行特征映射 2.正则化 → 正则化 → 过度正则化 实现代码 import nu ...

  9. 正负样本不平衡处理方法总结

    转载链接: https://blog.csdn.net/qq_14845119/article/details/78930091 1, Bootstrapping,hard negative mini ...

最新文章

  1. 西湖大学特聘研究员张岳:自然语言处理的一些瓶颈思考与探索
  2. (摘抄)HTTP 协议详解
  3. [转]那些年我们一起清除过的浮动
  4. 深入理解分布式技术 - 分布式缓存实战_Hot Key 和Big Key的发现与治理
  5. 正则表达式:去掉数字(整数、小数)前面多余的零
  6. 前端学习(1431):ajax封装六
  7. python perl lisp,是否可能像python中的perl的lvalue或lisp的setf一样?
  8. 《UNIX网络编程 卷2》读书笔记(一)
  9. 怎样使用http代理IP判断公立幼儿园和私立幼儿园的差距
  10. linux系统如何更改输入法切换快捷键,linux中什么快捷键可实现中英文的切换
  11. 开题报告:基于java的电子商务购物网站系统 毕业设计论文开题报告模板
  12. HCNA认证课程—VRP基础操作总结
  13. 3D打印树莓派4B外壳—内置UPS和统计显示信息
  14. Shell 教程 - 菜鸟教程
  15. 湖北省仙桃市谷歌高清卫星地图下载
  16. 物流设施布局方法——CRAFT
  17. 江苏科技大学计算机学院院长高尚,江苏科技大学计算机学院导师介绍:高尚
  18. APP推广基础知识大全
  19. android 反编译 jadx,jadx gui下载 jadx(Android反编译gui工具) v0.6.1 官方版 下载-脚本之家...
  20. Typora软件百度网盘下载地址

热门文章

  1. Linux中的In命令
  2. asp.net中page对象生命周期和各事件执行顺序
  3. DNN数据库核心表结构及设计思路探研
  4. FastDFS+Nginx实现文件服务器(转载)
  5. python之地基(三)
  6. 实例1、查询数据(多级组织)
  7. JVM加载class文件的原理机制
  8. Android各组件/控件间通信利器之EventBus
  9. 关于A*寻路算法的认识
  10. cocos2d-js 3.0 RC0 监听返回键、菜单键、进入后台(home键)、恢复显示等事件