请教DEAP遗传算法代码中bernoulli.rvs的含义
问题
以下是一段用DEAP包实现遗传算法的代码:
population_size = 4 num_generations = 4 gene_length = 10 # As we are trying to minimize the RMSE score, that's why using -1.0. # In case, when you want to maximize accuracy for instance, use 1.0 creator.create('FitnessMax', base.Fitness, weights = (-1.0,)) creator.create('Individual', list , fitness = creator.FitnessMax) toolbox = base.Toolbox() toolbox.register('binary', bernoulli.rvs, 0.5) toolbox.register('individual', tools.initRepeat, creator.Individual, toolbox.binary, n = gene_length) toolbox.register('population', tools.initRepeat, list , toolbox.individual) toolbox.register('mate', tools.cxOrdered) toolbox.register('mutate', tools.mutShuffleIndexes, indpb = 0.6) toolbox.register('select', tools.selRoulette) toolbox.register('evaluate', train_evaluate) population = toolbox.population(n = population_size) r = algorithms.eaSimple(population, toolbox, cxpb = 0.4, mutpb = 0.1, ngen = num_generations, verbose = False)
请问代码中toolbox.register('binary', bernoulli.rvs, 0.5)这一行里的bernoulli具体是什么含义?
回答
这里的bernoulli指的是伯努利分布,它是统计学里最基础的离散概率分布,只有两种结果:成功(取值1)或失败(取值0)。
代码里的bernoulli.rvs是来自scipy.stats模块的函数,作用是生成服从伯努利分布的随机数。后面的参数0.5表示生成1和0的概率各为50%。
这行代码通过DEAP的toolbox.register把这个随机数生成工具注册为binary,后续用来构建遗传算法中个体的基因——每个基因位都是0或1,以此实现二进制编码的个体创建。
内容的提问来源于stack exchange,提问作者NN_Developer
相关产品推荐
相关产品推荐

