You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:35:21