Escolha aleatória ponderada usando Python
-
Use a função
random.choices()
para gerar escolhas aleatórias ponderadas -
Use a função
numpy.random.choice()
para gerar escolhas aleatórias ponderadas
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:
- Pesos Relativos
- 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 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