Bild vom Herausgeber | Ideogramm
Zufallsdaten bestehen aus Werten, die durch verschiedene Instruments ohne vorhersehbare Muster generiert werden. Das Auftreten von Werten hängt von der Wahrscheinlichkeitsverteilung ab, aus der sie stammen, da sie nicht vorhersehbar sind.
Die Verwendung von Zufallsdaten in unseren Experimenten bietet viele Vorteile, darunter die Simulation realer Daten, synthetische Daten für das Coaching maschinellen Lernens oder statistische Stichprobenziehungen.
NumPy ist ein leistungsstarkes Paket, das viele mathematische und statistische Berechnungen unterstützt, einschließlich der Generierung zufälliger Daten. Von einfachen Daten bis hin zu komplexen mehrdimensionalen Arrays und Matrizen könnte NumPy uns dabei helfen, die Generierung zufälliger Daten zu erleichtern.
In diesem Artikel wird ausführlich erläutert, wie wir mit Numpy Zufallsdaten generieren können. Lassen Sie uns additionally damit beginnen.
Zufällige Datengenerierung mit NumPy
Sie müssen das NumPy-Paket in Ihrer Umgebung installiert haben. Wenn Sie das noch nicht getan haben, können Sie es mit pip installieren.
Wenn das Paket erfolgreich installiert wurde, fahren wir mit dem Hauptteil des Artikels fort.
Zunächst würden wir aus Reproduzierbarkeitsgründen die Startzahl festlegen. Wenn wir mit dem Pc Zufallszahlen berechnen, müssen wir bedenken, dass das, was wir tun, pseudozufällig ist. Das pseudozufällige Konzept liegt vor, wenn Daten zufällig erscheinen, aber deterministisch sind, wenn wir die Startpunkte kennen, die wir als Startwerte bezeichnen.
Um den Seed in NumPy festzulegen, verwenden wir den folgenden Code:
import numpy as np
np.random.seed(101)
Sie können jede beliebige optimistic Ganzzahl als Startwert angeben, der dann unser Startwert wird. Außerdem .random
Die Methode aus NumPy würde für diesen Artikel unsere Hauptfunktion werden.
Nachdem wir den Seed festgelegt haben, versuchen wir, mit NumPy Zufallszahlendaten zu generieren. Lassen Sie uns versuchen, fünf verschiedene Gleitkommazahlen nach dem Zufallsprinzip zu generieren.
Output>>
array((0.51639863, 0.57066759, 0.02847423, 0.17152166, 0.68527698))
Es ist möglich, das mehrdimensionale Array mit NumPy abzurufen. Der folgende Code würde beispielsweise ein 3×3-Array ergeben, das mit zufälligen Gleitkommazahlen gefüllt ist.
Output>>
array(((0.26618856, 0.77888791, 0.89206388),
(0.0756819 , 0.82565261, 0.02549692),
(0.5902313 , 0.5342532 , 0.58125755)))
Als nächstes könnten wir eine ganzzahlige Zufallszahl aus einem bestimmten Bereich generieren. Das können wir mit diesem Code tun:
np.random.randint(1, 1000, dimension=5)
Output>>
array((974, 553, 645, 576, 937))
Alle zuvor durch Zufallsstichproben generierten Daten folgten der Gleichverteilung. Das bedeutet, dass alle Daten eine ähnliche Wahrscheinlichkeit haben, aufzutreten. Wenn wir den Datengenerierungsprozess unendlich oft wiederholen, wäre die Häufigkeit aller entnommenen Zahlen nahezu gleich.
Wir können Zufallsdaten aus verschiedenen Verteilungen generieren. Hier versuchen wir, zehn Zufallsdaten aus der Standardnormalverteilung zu generieren.
np.random.regular(0, 1, 10)
Output>>
array((-1.31984116, 1.73778011, 0.25983863, -0.317497 , 0.0185246 ,
-0.42062671, 1.02851771, -0.7226102 , -1.17349046, 1.05557983))
Der obige Code nimmt den Z-Rating-Wert aus der Normalverteilung mit Mittelwert null und STD eins.
Wir können Zufallsdaten nach anderen Verteilungen generieren. So verwenden wir die Poisson-Verteilung, um Zufallsdaten zu generieren.
Output>>
array((10, 6, 3, 3, 8, 3, 6, 8, 3, 3))
Die Zufallsstichprobendaten aus der Poisson-Verteilung im obigen Code würden Zufallsereignisse mit einer bestimmten Durchschnittsrate simulieren (5), die generierte Zahl könnte jedoch variieren.
Wir könnten zufällige Daten gemäß der Binomialverteilung generieren.
np.random.binomial(10, 0.5, 10)
Output>>
array((5, 7, 5, 4, 5, 6, 5, 7, 4, 7))
Der obige Code simuliert die Experimente, die wir gemäß der Binomialverteilung durchführen. Stellen Sie sich einfach vor, wir werfen zehnmal eine Münze (erster Parameter: zehn und zweiter Parameter: Wahrscheinlichkeit: 0,5). Wie oft zeigt die Münze Kopf? Wie in der obigen Ausgabe gezeigt, haben wir das Experiment zehnmal durchgeführt (dritter Parameter).
Versuchen wir es mit der Exponentialverteilung. Mit diesem Code können wir Daten generieren, die der Exponentialverteilung folgen.
np.random.exponential(1, 10)
Output>>
array((0.7916478 , 0.59574388, 0.1622387 , 0.99915554, 0.10660882,
0.3713874 , 0.3766358 , 1.53743068, 1.82033544, 1.20722031))
Die Exponentialverteilung erklärt die Zeit zwischen Ereignissen. Beispielsweise kann man sagen, dass der obige Code darauf wartet, dass der Bus in die Haltestelle einfährt. Dies dauert eine zufällige Zeitspanne, im Durchschnitt jedoch 1 Minute.
Für eine erweiterte Generierung können Sie die Verteilungsergebnisse jederzeit kombinieren, um Beispieldaten zu erstellen, die einer benutzerdefinierten Verteilung folgen. Beispielsweise folgen 70 % der unten generierten Zufallsdaten einer Normalverteilung, während der Relaxation einer Exponentialverteilung folgt.
def combined_distribution(dimension=10):
# regular distribution
normal_samples = np.random.regular(loc=0, scale=1, dimension=int(0.7 * dimension))
#exponential distribution
exponential_samples = np.random.exponential(scale=1, dimension=int(0.3 * dimension))
# Mix the samples
combined_samples = np.concatenate((normal_samples, exponential_samples))
# Shuffle thes samples
np.random.shuffle(combined_samples)
return combined_samples
samples = combined_distribution()
samples
Output>>
array((-1.42085224, -0.04597935, -1.22524869, 0.22023681, 1.13025524,
0.74561453, 1.35293768, 1.20491792, -0.7179921 , -0.16645063))
Diese benutzerdefinierten Verteilungen sind viel leistungsfähiger, insbesondere wenn wir unsere Daten simulieren möchten, um tatsächlichen Falldaten zu folgen (die normalerweise unübersichtlicher sind).
Abschluss
NumPy ist ein leistungsstarkes Python-Paket für mathematische und statistische Berechnungen. Es generiert zufällige Daten, die für viele Ereignisse verwendet werden können, z. B. Datensimulationen, synthetische Daten für maschinelles Lernen und vieles mehr.
In diesem Artikel haben wir besprochen, wie wir mit NumPy zufällige Daten generieren können, einschließlich Methoden, die unsere Erfahrung bei der Datengenerierung verbessern könnten.
Cornellius Yudha Wijaya ist Information Science Assistant Supervisor und Datenautor. Während seiner Vollzeitbeschäftigung bei Allianz Indonesien teilt er gerne Python- und Datentipps über soziale Medien und in den Medien. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.