Escolha aleatória ponderada usando Python

Lakshay Kapoor 10 outubro 2023
  1. Use a função random.choices() para gerar escolhas aleatórias ponderadas
  2. Use a função numpy.random.choice() para gerar escolhas aleatórias ponderadas
Escolha aleatória ponderada usando Python

Em Python, podemos gerar facilmente números aleatórios usando as bibliotecas Random e NumPy.

A seleção de elementos aleatórios de uma lista ou matriz pelo resultado provável do elemento é conhecida como Opções Aleatórias Ponderadas. A seleção de um elemento é determinada atribuindo uma probabilidade a cada elemento presente. Às vezes, mais de um elemento também é selecionado na lista de elementos feitos.

Neste tutorial, discutiremos como gerar escolhas aleatórias ponderadas em Python.

Use a função random.choices() para gerar escolhas aleatórias ponderadas

Aqui, o módulo random do Python é usado para fazer números aleatórios.

Na função choices(), as escolhas aleatórias ponderadas são feitas com uma substituição. É também conhecida como amostra aleatória ponderada com reposição. Além disso, nesta função, os pesos desempenham um papel essencial. Os pesos definem o resultado provável da seleção de cada elemento. Existem dois tipos de pesos:

  1. Pesos Relativos
  2. Pesos cumulativos

Escolha Elementos com Pesos Relativos

O parâmetro weights define os pesos relativos. O resultado provável é diferente para cada elemento da lista. Se o resultado provável para cada elemento foi fixado usando os pesos relativos, então as seleções são feitas com base apenas nos pesos relativos.

Aqui está um exemplo:

import random

List = [12, 24, 36, 48, 60, 72, 84]
print(random.choices(List, weights=(30, 40, 50, 60, 70, 80, 90), k=7))

Aqui, cada elemento da lista recebe seu próprio peso, ou seja, o resultado provável. Além disso, k no exemplo acima é o número de elementos necessários da lista fornecida.

Resultado:

[60, 84, 36, 72, 84, 84, 60]

Aqui, a soma total dos pesos não é 100 porque eles são pesos relativos e não porcentagens. O número 84 ocorreu três vezes por ter o maior peso de todos os pesos. Portanto, a probabilidade de sua ocorrência será a maior.

Escolha elementos com pesos cumulativos

O parâmetro cum_weight é usado para definir os pesos cumulativos. O peso cumulativo de um elemento é determinado pelo peso do elemento anterior mais o peso relativo desse elemento. Por exemplo, os pesos relativos [10, 20, 30, 40] são equivalentes aos pesos cumulativos [10, 30, 60, 100]

Aqui está um exemplo:

import random

List = [13, 26, 39, 52, 65]
print(random.choices(List, cum_weights=(10, 30, 60, 100, 150), k=5))

Resultado:

[65, 65, 39, 13, 52]

Aqui também, o número 65 ocorre mais do que qualquer outro número, pois tem o maior peso.

Use a função numpy.random.choice() para gerar escolhas aleatórias ponderadas

Para gerar escolhas ponderadas aleatórias, NumPy geralmente é usado quando um usuário está usando a versão do Python inferior a 3.6.

Aqui, numpy.random.choice é usado para determinar a distribuição de probabilidade. Neste método, os elementos aleatórios de um array 1D são tomados e os elementos aleatórios de um array numpy são retornados usando a função choice().

import numpy as np

List = [500, 600, 700, 800]
sNumbers = np.random.choice(List, 4, p=[0.10, 0.20, 0.30, 0.40])
print(sNumbers)

Aqui, a probabilidade deve ser igual a 1. O número 4 representa o tamanho da lista.

Resultado:

[800 500 600 800]
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

Artigo relacionado - Python Random