轮盘赌算法

# -*- 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]

轮盘赌算法常用于机器学习中处理不平衡数据,对数据进行采样。简单实用,值得实现。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月27日
下一篇 2022年5月27日

相关推荐