python random简单例子(Python中的random模块的函数choice)
python random简单例子(Python中的random模块的函数choice)import random # 生成初始种群 def generate_population(size chromosome_length): population = [] for i in range(size): chromosome = [random.randint(0 1) for _ in range(chromosome_length)] population.append(chromosome) return population # 适应度函数 def fitness(chromosome): return sum(chromosome) # 选择操作 def selection(population fitnesses): return random.choices(populatio
random.choices(population weights=None * cum_weights=None k=1)是Python中random模块提供的一个函数,用于从序列population中随机选择k个元素,并返回一个列表。其中,序列population可以是列表、元组、字符串或其他序列类型。另外,weights参数可以指定每个元素被选择的权重,cum_weights参数可以指定每个元素的累积权重,从而影响元素被选择的概率。
函数参数说明:
- population:必选参数,表示要从中选择元素的序列,可以是列表、元组、字符串或其他序列类型。
- weights:可选参数,表示每个元素被选择的权重,必须是一个与population长度相同的列表。如果不指定该参数,则默认每个元素的权重相等。
- cum_weights:可选参数,表示每个元素的累积权重,必须是一个与population长度相同的列表。如果同时指定了weights和cum_weights参数,则weights参数将被忽略。
- k:可选参数,表示要选择的元素个数,默认为1。
1、我们使用 random.choices() 从1到6的数字中随机选择一个数字,以模拟掷骰子的结果。
import random
# 模拟掷骰子
def roll_die(sides):
return random.choices(range(1 sides 1))[0]
# 调用掷骰子函数
sides = 6
result = roll_die(sides)
print(result)
2、random.choices()函数来实现遗传算法的选择操作
import random
# 生成初始种群
def generate_population(size chromosome_length):
population = []
for i in range(size):
chromosome = [random.randint(0 1) for _ in range(chromosome_length)]
population.append(chromosome)
return population
# 适应度函数
def fitness(chromosome):
return sum(chromosome)
# 选择操作
def selection(population fitnesses):
return random.choices(population weights=fitnesses k=2)
# 交叉操作
def crossover(parent1 parent2):
point = random.randint(0 len(parent1) - 1)
child1 = parent1[:point] parent2[point:]
child2 = parent2[:point] parent1[point:]
return child1 child2
# 变异操作
def mutation(individual):
mutation_rate = 0.01
mutation_range = 0.1
if random.random() < mutation_rate:
return [gene random.uniform(-mutation_range mutation_range) for gene in individual]
else:
return individual
# 下一代个体生成
def next_generation(population fitnesses):
new_population = []
for i in range(len(population)):
parent1 parent2 = selection(population fitnesses)
child1 child2 = crossover(parent1 parent2)
mutated_child1 = mutation(child1)
mutated_child2 = mutation(child2)
new_population.append(max([parent1 parent2 mutated_child1 mutated_child2] key=fitness))
return new_population
# 遗传算法主函数
def genetic_algorithm(chromosome_length population_size generations):
population = generate_population(population_size chromosome_length)
for i in range(generations):
fitnesses = [fitness(individual) for individual in population]
population = next_generation(population fitnesses)
return max(population key=fitness)
# 调用遗传算法
chromosome_length = 10
population_size = 100
generations = 50
result = genetic_algorithm(chromosome_length population_size generations)
print(result)
需要进行选择、交叉和变异操作,以生成新的一代个体。选择操作可以使用random.choices()函数来实现,根据适应度大小来确定每个个体被选中的概率
3、投票分类器融合
import random
# 假设有 10 个分类器
classifiers = ["classifier1" "classifier2" "classifier3" "classifier4" "classifier5"
"classifier6" "classifier7" "classifier8" "classifier9" "classifier10"]
# 定义 vote 函数
def vote(classifiers):
predictions = random.choices(classifiers k=5)
return max(set(predictions) key=predictions.count)
# 调用 vote 函数得到集成预测结果
ensemble_prediction = vote(classifiers)
print("集成预测结果:" ensemble_prediction)