正负样本比率失衡SMOTE
目录
- 正负样本比率失衡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相关推荐
- python样本不均衡_使用Python中的smote处理正负样本之间的不平衡,python,实现,失衡,问题...
机器学习中难免遇到正负样本不平衡问题,处理办法通常有梁总,一:过采样,增加正样本数据:二:欠采样,减少负样本数据,缺点是会丢失一些重要信息.smote属于过采样. 代码 # from imblearn ...
- 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等
目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...
- 关于正负样本不平衡问题的解决方法收集整理
参考文献 1.如何解决机器学习中数据不平衡问题 2.Learning from imbalanced data 原文 3.对于正负样本不均衡的解决方法 4.2中论文的翻译总结 一. 问题背分析 1.背 ...
- 正负样本不均衡的解决办法
转载自:http://blog.csdn.net/lujiandong1/article/details/52658675 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时, ...
- 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...
- 人脸检测流程及正负样本下载
源地址:http://www.thinkface.cn/thread-146-1-4.html 人脸检测做训练当然可以用OpenCV训练好的xml,但是岂止于此.我们也要动手做!~ 首先是样本的选取. ...
- 【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本
本文转自|AI公园 导读 又一篇anchor匹配策略的文章,不过确实是简单有效,在ATSS上只需要很小的修改就可以提升性能.GFL2在框的预测上用上了概率分布,这里又在anchor匹配上用上了概率分布 ...
- ML之LoR:利用LoR二分类之非线性决策算法案例应用之划分正负样本
ML之LoR:利用LoR二分类之非线性决策算法案例应用之划分正负样本 目录 输出结果 实现代码 输出结果 1.对数据集进行特征映射 2.正则化 → 正则化 → 过度正则化 实现代码 import nu ...
- 正负样本不平衡处理方法总结
转载链接: https://blog.csdn.net/qq_14845119/article/details/78930091 1, Bootstrapping,hard negative mini ...
最新文章
- 西湖大学特聘研究员张岳:自然语言处理的一些瓶颈思考与探索
- (摘抄)HTTP 协议详解
- [转]那些年我们一起清除过的浮动
- 深入理解分布式技术 - 分布式缓存实战_Hot Key 和Big Key的发现与治理
- 正则表达式:去掉数字(整数、小数)前面多余的零
- 前端学习(1431):ajax封装六
- python perl lisp,是否可能像python中的perl的lvalue或lisp的setf一样?
- 《UNIX网络编程 卷2》读书笔记(一)
- 怎样使用http代理IP判断公立幼儿园和私立幼儿园的差距
- linux系统如何更改输入法切换快捷键,linux中什么快捷键可实现中英文的切换
- 开题报告:基于java的电子商务购物网站系统 毕业设计论文开题报告模板
- HCNA认证课程—VRP基础操作总结
- 3D打印树莓派4B外壳—内置UPS和统计显示信息
- Shell 教程 - 菜鸟教程
- 湖北省仙桃市谷歌高清卫星地图下载
- 物流设施布局方法——CRAFT
- 江苏科技大学计算机学院院长高尚,江苏科技大学计算机学院导师介绍:高尚
- APP推广基础知识大全
- android 反编译 jadx,jadx gui下载 jadx(Android反编译gui工具) v0.6.1 官方版 下载-脚本之家...
- Typora软件百度网盘下载地址