Scelta casuale ponderata usando Python

Lakshay Kapoor 30 gennaio 2023
  1. Usa la funzione random.choices() per generare scelte casuali ponderate
  2. Usa la funzione numpy.random.choice() per generare scelte casuali ponderate
Scelta casuale ponderata usando Python

In Python, possiamo facilmente generare numeri casuali usando le librerie Random e NumPy.

La selezione di elementi casuali da un elenco o da un array in base al probabile risultato dell’elemento è nota come Scelte casuali ponderate. La selezione di un elemento è determinata assegnando una probabilità a ciascun elemento presente. A volte viene selezionato anche più di un elemento dalla lista degli elementi realizzati.

In questo tutorial, discuteremo come generare scelte casuali ponderate in Python.

Usa la funzione random.choices() per generare scelte casuali ponderate

Qui, il modulo random di Python viene utilizzato per creare numeri casuali.

Nella funzione choices(), vengono effettuate scelte casuali ponderate con una sostituzione. È anche noto come campione casuale ponderato con sostituzione. Anche in questa funzione i pesi giocano un ruolo essenziale. I pesi definiscono il probabile esito della selezione di ciascun elemento. Esistono due tipi di pesi:

  1. Pesi relativi
  2. Pesi cumulativi

Scegli elementi con pesi relativi

Il parametro weights definisce i pesi relativi. Il probabile esito è diverso per ogni elemento della lista. Se l’esito probabile per ogni elemento è stato fissato utilizzando i pesi relativi, le selezioni vengono effettuate solo in base ai pesi relativi.

Ecco un esempio:

import random

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

Qui ad ogni elemento della lista viene dato il proprio peso, cioè il probabile risultato. Inoltre, k nell’esempio sopra è il numero di elementi necessari dall’elenco dato.

Produzione:

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

Qui, la somma totale dei pesi non è 100 perché sono pesi relativi e non percentuali. Il numero 84 si è verificato tre volte in quanto ha il peso più alto di tutti i pesi. Quindi la probabilità del suo verificarsi sarà la più alta.

Scegli elementi con pesi cumulativi

Il parametro cum_weight viene utilizzato per definire i pesi cumulativi. Il peso cumulativo di un elemento è determinato dal peso dell’elemento precedente più il peso relativo di quell’elemento. Ad esempio, i pesi relativi [10, 20, 30, 40] sono equivalenti ai pesi cumulativi [10, 30, 60, 100]

Ecco un esempio:

import random

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

Produzione:

[65, 65, 39, 13, 52]

Anche qui, il numero 65 si verifica più di qualsiasi altro numero in quanto ha il peso più alto.

Usa la funzione numpy.random.choice() per generare scelte casuali ponderate

Per generare scelte casuali ponderate, NumPy viene generalmente utilizzato quando un utente utilizza la versione di Python inferiore alla 3.6.

Qui, numpy.random.choice viene utilizzato per determinare la distribuzione di probabilità. In questo metodo, vengono presi elementi casuali di un array 1D e vengono restituiti elementi casuali di un array numpy utilizzando la funzione 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)

Qui, la probabilità dovrebbe essere uguale a 1. Il numero 4 rappresenta la dimensione della lista.

Produzione:

[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

Articolo correlato - Python Random