SMOTE算法(人工合成数据)
来源:互联网 发布:济宁淘宝代运 编辑:程序博客网 时间:2024/06/07 09:50
SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的信息过于特别(Specific)而不够泛化(General),SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体如图2所示,算法流程如下。
- 对于少数类中每一个样本
x ,以欧氏距离为标准计算它到少数类样本集Smin 中所有样本的距离,得到其k近邻。 - 根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本
x ,从其k近邻中随机选择若干个样本,假设选择的近邻为xn 。 - 对于每一个随机选出的近邻
xn ,分别与原样本按照如下的公式构建新的样本xnew=x+rand(0,1)∗|x−xn|
#SMOTE算法及其python实现import randomfrom sklearn.neighbors import NearestNeighborsimport numpy as npclass Smote: def __init__(self,samples,N=10,k=5): self.n_samples,self.n_attrs=samples.shape self.N=N self.k=k self.samples=samples self.newindex=0 # self.synthetic=np.zeros((self.n_samples*N,self.n_attrs)) def over_sampling(self): N=int(self.N/100) self.synthetic = np.zeros((self.n_samples * N, self.n_attrs)) neighbors=NearestNeighbors(n_neighbors=self.k).fit(self.samples) print ('neighbors',neighbors) for i in range(len(self.samples)): print('samples',self.samples[i]) nnarray=neighbors.kneighbors(self.samples[i].reshape((1,-1)),return_distance=False)[0] #Finds the K-neighbors of a point. print ('nna',nnarray) self._populate(N,i,nnarray) return self.synthetic # for each minority class sample i ,choose N of the k nearest neighbors and generate N synthetic samples. def _populate(self,N,i,nnarray): for j in range(N): print('j',j) nn=random.randint(0,self.k-1) #包括end dif=self.samples[nnarray[nn]]-self.samples[i] gap=random.random() self.synthetic[self.newindex]=self.samples[i]+gap*dif self.newindex+=1 print(self.newindex)a=np.array([[1,2,3],[4,5,6],[2,3,1],[2,1,2],[2,3,4],[2,3,4]])s=Smote(a,N=1000)s.over_sampling()
0 0
- SMOTE算法(人工合成数据)
- 数据不平衡处理----smote算法
- 数据不平衡之SMOTE算法
- smote算法
- 解决数据不平衡的smote算法简述,以及改进
- 机器学习数据不平衡处理之SMOTE算法实现
- 不平衡数据处理之SMOTE算法
- SMOTE算法及其python实现
- 样本不平衡--SMOTE算法-学习笔记
- 从零开始实现过抽样算法smote
- SMOTE非平衡数据重采样方法
- R语言中的SMOTE算法的参数解释
- R中的数据抽样SMOTE (谢佳标老师讲课笔记)
- 当常规的算法都山穷水尽之后,你可以试试python中的SMOTE算法
- 使用Weka进行数据挖掘(Weka教程六)Weka采样Filter/Resample/SMOTE
- SMOTE python实现
- matlab实现SMOTE
- SMOTE相关论文
- 数组的知识点汇总
- 创建XML文件
- Mybatis缓存
- 【Java】简介
- SRM551 Div1Medium ColorfulWolves
- SMOTE算法(人工合成数据)
- File类知识点整理
- Update a Dictionary map
- poj 1852 Ants
- 2017.4.17学习
- Web基础之JavaScript实战
- Node.js编程
- 【个人笔记重点,不作为参考】主题:面向对象的程序设计
- 设计模式——单例模式