Scelta casuale ponderata usando Python
-
Usa la funzione
random.choices()
per generare scelte casuali ponderate -
Usa la funzione
numpy.random.choice()
per generare scelte casuali ponderate
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:
- Pesi relativi
- 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 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