Gewichtete Zufallsauswahl mit Python
-
Verwenden Sie die Funktion
random.choices()
, um gewichtete Zufallsauswahlen zu generieren -
Verwenden Sie die Funktion
numpy.random.choice()
, um gewichtete Zufallsauswahlen zu generieren
In Python können wir ganz einfach Zufallszahlen mit Random- und NumPy-Bibliotheken generieren.
Die Auswahl zufälliger Elemente aus einer Liste oder einem Array nach dem wahrscheinlichen Ergebnis des Elements wird als gewichtete Zufallsauswahl bezeichnet. Die Auswahl eines Elements wird bestimmt, indem jedem vorhandenen Element eine Wahrscheinlichkeit zugewiesen wird. Manchmal wird auch mehr als ein Element aus der Liste der erstellten Elemente ausgewählt.
In diesem Tutorial werden wir diskutieren, wie man in Python gewichtete Zufallsauswahlen generiert.
Verwenden Sie die Funktion random.choices()
, um gewichtete Zufallsauswahlen zu generieren
Hier wird das Modul random
von Python verwendet, um Zufallszahlen zu erzeugen.
In der Funktion choices()
werden gewichtete Zufallsauswahlen mit Ersetzung getroffen. Sie wird auch als gewichtete Zufallsstichprobe mit Ersatz bezeichnet. Auch in dieser Funktion spielen Gewichte eine wesentliche Rolle. Gewichtungen definieren das wahrscheinliche Ergebnis der Auswahl jedes Elements. Es gibt zwei Arten von Gewichten:
- Relative Gewichte
- Kumulative Gewichte
Wählen Sie Elemente mit relativer Gewichtung
Der Parameter weights
definiert die relativen Gewichte. Das wahrscheinliche Ergebnis ist für jedes Element in der Liste unterschiedlich. Wenn das wahrscheinliche Ergebnis für jedes Element unter Verwendung der relativen Gewichtungen festgelegt wurde, erfolgt die Auswahl nur auf der Grundlage der relativen Gewichtungen.
Hier ist ein Beispiel:
import random
List = [12, 24, 36, 48, 60, 72, 84]
print(random.choices(List, weights=(30, 40, 50, 60, 70, 80, 90), k=7))
Hier erhält jedes Element in der Liste sein eigenes Gewicht, d. h. das wahrscheinliche Ergebnis. Außerdem ist k im obigen Beispiel die Anzahl der Elemente, die aus der gegebenen Liste benötigt werden.
Ausgabe:
[60, 84, 36, 72, 84, 84, 60]
Hier beträgt die Gesamtsumme der Gewichtungen nicht 100, da es sich um relative Gewichte und nicht um Prozentsätze handelt. Die Zahl 84 ist dreimal aufgetreten, da sie das höchste Gewicht aller Gewichte hat. Die Wahrscheinlichkeit seines Auftretens wird also am höchsten sein.
Wählen Sie Elemente mit kumulativen Gewichten
Mit dem Parameter cum_weight
werden die kumulierten Gewichte definiert. Die kumulative Gewichtung eines Elements wird durch die Gewichtung des vorhergehenden Elements plus die relative Gewichtung dieses Elements bestimmt. Zum Beispiel entsprechen die relativen Gewichtungen [10, 20, 30, 40] den kumulativen Gewichten [10, 30, 60, 100]
Hier ist ein Beispiel:
import random
List = [13, 26, 39, 52, 65]
print(random.choices(List, cum_weights=(10, 30, 60, 100, 150), k=5))
Ausgabe:
[65, 65, 39, 13, 52]
Auch hier kommt die Zahl 65 häufiger vor als jede andere Zahl, da sie das höchste Gewicht hat.
Verwenden Sie die Funktion numpy.random.choice()
, um gewichtete Zufallsauswahlen zu generieren
Zum Generieren von zufällig gewichteten Auswahlmöglichkeiten wird NumPy im Allgemeinen verwendet, wenn ein Benutzer die Python-Version unter 3.6 verwendet.
Hier wird numpy.random.choice
verwendet, um die Wahrscheinlichkeitsverteilung zu bestimmen. Bei dieser Methode werden zufällige Elemente eines 1D-Arrays genommen und zufällige Elemente eines numpy-Arrays mit der Funktion choice()
zurückgegeben.
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)
Hier sollte die Wahrscheinlichkeit gleich 1 sein. Die Zahl 4 steht für die Größe der Liste.
Ausgabe:
[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