# -*- coding: utf-8 -*-
# @Use :
# @Time : 2022/5/25 23:42
# @FileName: roulette.py
# @Software: PyCharm
import random
def roulette(datas, weights):
"""
轮盘赌算法:根据权重,选择data
datas:数据列表
weights :权重列表
"""
weights_sum = sum(weights)
probabilitys = []
for w in weights:
probabilitys.append(w / weights_sum)
random_value = random.random() # 0-1的随机数
# 将概率累加0-1区间序列,看随机数落在哪个区间
data_index = 0
probability_sum = 0
for i, p in enumerate(probabilitys):
probability_sum += p
if random_value <= probability_sum:
data_index = i
return datas[data_index]
轮盘赌算法常用于机器学习中处理不平衡数据,对数据进行采样。简单实用,值得实现。
文章出处登录后可见!
已经登录?立即刷新