Hugging Face Train und geteilter Datensatz

Hugging Face Train Und Geteilter Datensatz



Die Hugging Face-Bibliothek verfügt nicht über eine spezielle Funktion namens train_test_split. Wenn es jedoch darum geht, die Daten für Training und Tests bei maschinellen Lernaufgaben aufzuteilen, wird die Funktion train_test_split häufig in anderen beliebten Bibliotheken wie scikit-learn verwendet. Hier erklären wir die Parameter, die typischerweise in der Funktion train_test_split von scikit-learn verwendet werden.

Die train_test_split-Methode in der Datensatzbibliothek von Hugging Face wird verwendet, um einen Datensatz in zwei Teilmengen zu unterteilen: eine Trainingsteilmenge und eine Testteilmenge. Diese Methode wird häufig beim maschinellen Lernen eingesetzt, um die Leistung eines Modells anhand unsichtbarer Daten zu bewerten. Die Trainingsteilmenge wird zum Trainieren des Modells verwendet, während die Testteilmenge zur Bewertung seiner Leistung und Generalisierungsfähigkeiten verwendet wird.







Hier ist eine Übersicht über die train_test_split-Methode in Hugging Face:



  1. test_size (numpy.random.Generator, optional) : Die Größe der Testaufteilung wird durch diese Option bestimmt. Der Typ kann entweder Float oder Integer sein.
  • Wenn es als Float angegeben wird, sollte es den Prozentsatz des Datensatzes widerspiegeln, der in die Testaufteilung einbezogen werden soll, und zwischen 0,0 und 1,0 liegen.
  • Die genaue Anzahl der Testproben wird durch den Wert dargestellt, wenn dieser als Ganzzahl angegeben wird.
  • Wenn es auf „Keine“ gesetzt ist, wird das Komplement der Zuggröße als Wert verwendet.
  • Wenn train_size ebenfalls None ist, wird es auf 0,25 (25 % des Datensatzes) gesetzt.
  • train_size (numpy.random.Generator, optional): Die Größe der Zugaufteilung wird durch diesen Parameter bestimmt. Es folgt den gleichen Richtlinien wie test_size.
    • Wenn es als Float angegeben wird, sollte es den Prozentsatz des Datensatzes widerspiegeln, der in die Zugaufteilung einbezogen werden soll, und zwischen 0,0 und 1,0 liegen.
    • Die genaue Anzahl der Zugproben wird durch den Wert dargestellt, wenn er als Ganzzahl angegeben wird.
    • Wenn es auf „Keine“ gesetzt ist, wird der Wert automatisch in das Komplement der Testgröße geändert.
  • shuffle (bool, optional, standardmäßig True)
    • Dieser Parameter bestimmt, ob die Daten vor dem Teilen gemischt werden sollen oder nicht.
    • Wenn es auf „True“ gesetzt ist, werden die Daten vor der Aufteilung zufällig gemischt.
    • Wenn es auf „Falsch“ gesetzt ist, werden die Daten ohne Mischen aufgeteilt.
  • stratify_by_column (str, optional, standardmäßig None)
    • Dieser Parameter wird für die geschichtete Aufteilung von Daten basierend auf einer bestimmten Spalte verwendet.
    • Wenn es angegeben ist, sollte es der Spaltenname der Labels oder Klassen sein.
    • Die Daten werden so aufgeteilt, dass die gleiche Verteilung der Beschriftungen oder Klassen in den Zug- und Testaufteilungen erhalten bleibt.
  • Seed (int, optional)
    • Mit diesem Parameter können Sie einen Startwert festlegen, um den Standard-BitGenerator zu initialisieren.
    • Wenn es auf „Keine“ gesetzt ist, wird dem Betriebssystem eine neue, unvorhersehbare Entropie entnommen.
    • Wenn eine Ganzzahl oder Array-ähnliche Ganzzahlen übergeben werden, werden diese zur Ableitung des anfänglichen BitGenerator-Zustands verwendet.
  • Generator (numpy.random.Generator, optional)
    • Mit diesem Parameter können Sie einen NumPy-Zufallsgenerator angeben, um die Permutation der Datensatzzeilen zu berechnen.
    • Wenn es auf None (Standard) gesetzt ist, wird np.random.default_rng verwendet, der Standard-BitGenerator (PCG64) von NumPy.
  • keep_in_memory (bool, Standardwert ist False)
    • Dieser Parameter bestimmt, ob die geteilten Indizes im Speicher verbleiben, anstatt sie in eine Cache-Datei zu schreiben.
    • Wenn es auf True gesetzt ist, werden die Split-Indizes während des Splitting-Vorgangs im Speicher gespeichert.
    • Wenn es auf „Falsch“ gesetzt ist, werden die geteilten Indizes zur späteren Verwendung in eine Cache-Datei geschrieben.
  • load_from_cache_file (Optional[bool], standardmäßig True, wenn Caching aktiviert ist)
    • Dieser Parameter bestimmt, ob eine Cache-Datei zum Laden der geteilten Indizes verwendet werden soll, anstatt sie neu zu berechnen.
    • Wenn es auf „True“ gesetzt ist und eine Cache-Datei identifiziert werden kann, in der die Split-Indizes gespeichert sind, wird diese verwendet.
    • Wenn es auf „False“ gesetzt ist, werden die Split-Indizes neu berechnet, auch wenn eine Cache-Datei vorhanden ist.
    • Der Standardwert ist True, wenn Caching aktiviert ist.
  • train_cache_file_name (str, optional)
    • Mit diesem Parameter können Sie einen bestimmten Pfad oder Namen für die Cache-Datei angeben, in der die Train-Split-Indizes gespeichert werden.
    • Wenn es angegeben ist, werden die Zugaufteilungsindizes in dieser Cache-Datei anstelle des automatisch generierten Cache-Dateinamens gespeichert.
  • test_cache_file_name (str, optional)
    • Mit diesem Parameter können Sie einen bestimmten Pfad oder Namen für die Cache-Datei angeben, in der die Test-Split-Indizes gespeichert werden.
    • Wenn es angegeben ist, werden die Test-Split-Indizes in dieser Cache-Datei anstelle des automatisch generierten Cache-Dateinamens gespeichert.
  • write_batch_size (int, standardmäßig 1000)
    • Dieser Parameter bestimmt die Anzahl der Zeilen pro Schreibvorgang für den Cache-Datei-Writer.
    • Es handelt sich um einen Kompromiss zwischen Speichernutzung und Verarbeitungsgeschwindigkeit.
    • Höhere Werte reduzieren die Anzahl der Schreibvorgänge, verbrauchen jedoch mehr Speicher während der Verarbeitung.
    • Niedrigere Werte verbrauchen weniger temporären Speicher, können sich jedoch geringfügig auf die Verarbeitungsgeschwindigkeit auswirken.
  • train_new_fingerprint (str, optional, standardmäßig None)
    • Dieser Parameter stellt den neuen Fingerabdruck des Zugsatzes nach Anwendung einer Transformation dar.
    • Wenn es angegeben ist, wird ein neuer Fingerabdruck für den Zugsatz bereitgestellt.
    • Wenn es auf „Keine“ gesetzt ist, wird der neue Fingerabdruck anhand eines Hashs des vorherigen Fingerabdrucks und der Transformationsargumente berechnet.
  • test_new_fingerprint (str, optional, standardmäßig None)
    • Dieser Parameter stellt den neuen Fingerabdruck des Testsatzes nach Anwendung einer Transformation dar.
    • Wenn es angegeben ist, wird ein neuer Fingerabdruck für den Testsatz bereitgestellt.
    • Wenn es auf „Keine“ gesetzt ist, wird der neue Fingerabdruck anhand eines Hashs des vorherigen Fingerabdrucks und der Transformationsargumente berechnet.

    Syntax:

    aus sklearn.model_selection import train_test_split

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    X : Dies stellt die Eingabemerkmale oder unabhängigen Variablen Ihres Datensatzes dar.



    • Und : Dies stellt die Ausgabe oder abhängige Variable dar, die Sie vorhersagen möchten.
    • test_size : Dieser Parameter bestimmt den Anteil des Datensatzes, der zum Testen zugewiesen wird. Es kann als Gleitkommazahl (z. B. 0,2 für 20 %) oder als Ganzzahl (z. B. 200 für 200 Proben) angegeben werden.
    • random_state : Dies ist ein optionaler Parameter, mit dem Sie einen Startwert für den Zufallszahlengenerator festlegen können. Es stellt sicher, dass die Aufteilung reproduzierbar ist, was bedeutet, dass Sie dieselbe Aufteilung erhalten, wenn Sie denselben zufälligen Zustandswert verwenden.

    Die Funktion train_test_split gibt vier Datensätze zurück:





    • X_train : Der Trainingssatz der Eingabefunktionen.
    • X_test : Der Testsatz von Eingabefunktionen.
    • y_train : Der Trainingssatz der Ausgabeetiketten.
    • y_test : Der Testsatz von Ausgabeetiketten.

    Beispiel : Das folgende Beispielprogramm wird gespeichert als „ test.py “.

    aus sklearn.model_selection import train_test_split

    aus Datensätzen import load_dataset

    # Schritt 1: Laden Sie den Datensatz

    dataset = load_dataset('imdb')

    X = Datensatz['train']['text']

    y = Datensatz['train']['label']

    # Schritt 2: Teilen Sie den Datensatz

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,

    shuffle=True, random_state=42)

    # Schritt 3: Erkunden Sie den Datensatz

    print('Anzahl der Beispiele im Originaldatensatz:', len(X))

    print('Anzahl der Beispiele im Zugdatensatz:', len(X_train))

    print('Anzahl der Beispiele im Testdatensatz:', len(X_test))

    # Schritt 4: Beispieldaten abrufen und ausdrucken

    print('\nBeispiel aus dem Zugdatensatz:')

    print(X_train[0], y_train[0])

    print('\nBeispiel aus dem Testdatensatz:')

    print(X_test[0], y_test[0])

    Diese Importanweisung stammt von scikit-learn, nicht aus der Hugging Face-Datensatzbibliothek. Bitte stellen Sie sicher, dass scikit-learn in Ihrer Umgebung installiert ist. Sie können es mit dem folgenden Befehl installieren:



    pip install scikit-learn

    Erläuterung: Zuerst importieren wir das notwendige Modul: train_test_split aus scikit-learn.

    • Wir laden den IMDb-Datensatz mit „load_dataset(‘imdb‘)“ und weisen ihn der Datensatzvariablen zu.
    • Um train_test_split zu verwenden, müssen wir die Eingabemerkmale (X) und die entsprechenden Beschriftungen (y) trennen. In diesem Fall gehen wir davon aus, dass der Datensatz eine Aufteilung mit dem Namen „train“ mit „text“ als Eingabemerkmalen und „label“ als entsprechenden Beschriftungen aufweist. Möglicherweise müssen Sie die Schlüssel basierend auf der Struktur Ihres Datensatzes anpassen.
    • Anschließend übergeben wir die Eingabemerkmale (X) und Beschriftungen (y) zusammen mit anderen Parametern an train_test_split. In diesem Beispiel setzen wir test_size auf 0,2, was bedeutet, dass 20 % der Daten zum Testen zugewiesen werden. Der shuffle-Parameter ist auf „True“ gesetzt, um die Daten vor der Aufteilung zufällig zu mischen, und der random_state-Parameter ist zur Reproduzierbarkeit auf 42 gesetzt.
    • Die Funktion train_test_split gibt vier Datensätze zurück: X_train, X_test, y_train und y_test. Diese stellen die Trainings- und Testteilmengen der Eingabemerkmale bzw. Beschriftungen dar.
    • Wir geben die Anzahl der Beispiele im Originaldatensatz (len(X)), im Trainingsdatensatz (len(X_train)) und im Testdatensatz (len(X_test)) aus. Dadurch können wir den Aufteilungsprozess überprüfen und sicherstellen, dass die Teilmengen korrekt erstellt werden.
    • Schließlich greifen wir auf ein Beispiel aus dem Trainingsdatensatz (X_train[0], y_train[0]) und ein Beispiel aus dem Testdatensatz (X_test[0], y_test[0]) zu und drucken es aus.

    Ausgabe : Wir führen das zuvor gespeicherte Programm mit dem Python „test.py“ aus.

    Abschluss

    Die Train-Test-Split-Funktionalität, die von der Datensatzbibliothek von Hugging Face bereitgestellt wird, bietet in Kombination mit der train_test_split-Funktion von scikit-learn eine bequeme und effiziente Möglichkeit, einen Datensatz in separate Trainings- und Testteilmengen aufzuteilen.

    Mithilfe der Funktion train_test_split können Sie die Größe des Testsatzes steuern, ob die Daten gemischt werden sollen und zur Reproduzierbarkeit einen zufälligen Startwert festlegen. Diese Flexibilität ermöglicht eine effektive Bewertung von Modellen für maschinelles Lernen anhand unsichtbarer Daten und hilft bei der Erkennung von Problemen wie Über- oder Unteranpassung.

    Mit den Parametern der Funktion train_test_split können Sie verschiedene Aspekte der Aufteilung steuern, z. B. die Größe des Testsatzes (test_size), das Mischen der Daten (shuffle) und die Durchführung einer geschichteten Aufteilung basierend auf bestimmten Spalten (stratify_by_column). Darüber hinaus können Sie zur Reproduzierbarkeit einen Seed-Wert (Seed) angeben und die Cache-Dateinamen zum Speichern der Split-Indizes (train_cache_file_name und test_cache_file_name) anpassen.

    Die Funktionalität, die Hugging Face bietet, erleichtert die Vorbereitung Ihrer Daten für das Modelltraining und die Modellauswertung. Durch separate Trainings- und Testteilmengen können Sie die Leistung Ihres Modells anhand unsichtbarer Daten genau beurteilen, potenzielle Probleme wie Überanpassung erkennen und fundierte Entscheidungen für Modellverbesserungen treffen.

    Insgesamt bietet die Train-Test-Split-Funktion in der Datensatzbibliothek von Hugging Face in Verbindung mit train_test_split von scikit-learn ein leistungsstarkes Toolset für die effiziente Datenaufteilung, Modellbewertung und Entwicklung robuster Lösungen für maschinelles Lernen.