def getData(self): """ 获取进化后的数据集 """ #Setep1 获取差分进化后SMOTER参数 de = DE(fitness=self.fitness, D=3, DRange=self.Drange, F=self.F, CR=self.CR, PopulationSize=self.PopulationSize, Lives=self.Lives) bestPars = de.evolution(otherPars=[self.data]) #Step2 使用最佳参数获得数据集 S = SMOTER(k=bestPars[0, 0], m=bestPars[0, 1], r=bestPars[0, 2], data=self.data) return (S.smoteR(), bestPars)
def transform(self, x, y): """ 用DE优化SMOTEND,针对特定数据集 模型和评估指标的优化 Parameters: ------------------- Drange,F,CR,PopulationSize,Live: DE的相关参数 x,y: 用于评估参数的数据集 metric: 评估指标 modelName: 用的模型 times: 验证时计算的次数 Return: ------- (newX,newY,bestPars(array(1*d))) """ metric, modelName, DRange, F, CR, PopulationSize, Lives = self.metric, self.modelName, self.DRange, self.F, self.CR, self.PopulationSize, self.Lives #Setep1 获取差分进化后SMOTER参数 de = DE(fitness=SMOTENDDE_Fitness, D=3, DRange=DRange, F=F, CR=CR, PopulationSize=PopulationSize, Lives=Lives) paras, _ = de.evolution(otherPars=(x, y, modelName, metric)) #Step2 返回最后一代参数 return paras