Abbracciare il treno dei volti e dividere il set di dati

Abbracciare Il Treno Dei Volti E Dividere Il Set Di Dati



La libreria Hugging Face non ha una funzione specifica denominata train_test_split. Tuttavia, quando si tratta di suddividere i dati per l'addestramento e il test nelle attività di machine learning, la funzione train_test_split viene comunemente utilizzata in altre librerie popolari come scikit-learn. Qui spiegheremo i parametri tipicamente utilizzati nella funzione train_test_split di scikit-learn.

Il metodo train_test_split nella libreria di set di dati di Hugging Face viene utilizzato per dividere un set di dati in due sottoinsiemi: un sottoinsieme di addestramento e un sottoinsieme di test. Questo metodo viene comunemente utilizzato nell'apprendimento automatico per valutare le prestazioni di un modello su dati invisibili. Il sottoinsieme di training viene utilizzato per addestrare il modello, mentre il sottoinsieme di testing viene utilizzato per valutarne le prestazioni e le capacità di generalizzazione.







Ecco una panoramica del metodo train_test_split in Hugging Face:



  1. test_size (numpy.random.Generator, opzionale) : la dimensione della suddivisione del test è determinata da questa opzione. Il tipo può essere float o intero.
  • Se viene fornito in formato float, dovrebbe riflettere la percentuale del set di dati da includere nella suddivisione del test ed essere compreso tra 0,0 e 1,0.
  • Il numero esatto di campioni di prova è rappresentato dal valore se viene fornito come numero intero.
  • Se è impostato su Nessuno, come valore viene utilizzato il complemento della dimensione del treno.
  • Se anche train_size è None, verrà impostato su 0,25 (25% del set di dati).
  • train_size (numpy.random.Generator, opzionale): La dimensione della suddivisione del treno è determinata da questo parametro. Segue le stesse linee guida di test_size.
    • Se viene fornito in formato float, dovrebbe riflettere la percentuale del set di dati da includere nella suddivisione del treno ed essere compreso tra 0,0 e 1,0.
    • Il numero esatto di campioni di treno è rappresentato dal valore se viene fornito come numero intero.
    • Se è impostato su Nessuno, il valore viene automaticamente modificato nel complemento della dimensione del test.
  • shuffle (bool, opzionale, il valore predefinito è True)
    • Questo parametro determina se mescolare o meno i dati prima della suddivisione.
    • Se è impostato su True, i dati verranno mescolati casualmente prima della suddivisione.
    • Se è impostato su False, i dati verranno divisi senza mescolarli.
  • stratify_by_column (str, opzionale, il valore predefinito è Nessuno)
    • Questo parametro viene utilizzato per la suddivisione stratificata dei dati in base a una colonna specifica.
    • Se è specificato, dovrebbe essere il nome della colonna delle etichette o delle classi.
    • I dati verranno suddivisi in modo da mantenere la stessa distribuzione di etichette o classi nelle suddivisioni di training e test.
  • seme (int, opzionale)
    • Questo parametro consente di impostare un seed per inizializzare il BitGenerator predefinito.
    • Se è impostato su None, dal sistema operativo verrà estratta un'entropia fresca e imprevedibile.
    • Se viene passato un numero intero o numeri interi simili a un array, verranno utilizzati per derivare lo stato iniziale di BitGenerator.
  • generatore (numpy.random.Generator, opzionale)
    • Questo parametro consente di specificare un generatore casuale NumPy per calcolare la permutazione delle righe del set di dati.
    • Se è impostato su None (impostazione predefinita), utilizza np.random.default_rng che è il BitGenerator predefinito (PCG64) di NumPy.
  • keep_in_memory (bool, il valore predefinito è False)
    • Questo parametro determina se mantenere gli indici suddivisi in memoria invece di scriverli in un file di cache.
    • Se è impostato su True, gli indici di suddivisione verranno archiviati in memoria durante il processo di suddivisione.
    • Se è impostato su False, gli indici suddivisi verranno scritti in un file di cache per un utilizzo successivo.
  • load_from_cache_file (Facoltativo[bool], il valore predefinito è True se la memorizzazione nella cache è abilitata)
    • Questo parametro determina se utilizzare un file di cache per caricare gli indici suddivisi invece di ricalcolarli.
    • Se è impostato su True ed è possibile identificare un file di cache che memorizza gli indici suddivisi, verrà utilizzato.
    • Se è impostato su False, gli indici suddivisi verranno ricalcolati anche se esiste un file di cache.
    • Il valore predefinito è True se la memorizzazione nella cache è abilitata.
  • train_cache_file_name (str, opzionale)
    • Questo parametro consente di fornire un percorso o un nome specifico per il file di cache che memorizza gli indici di suddivisione del treno.
    • Se è specificato, gli indici di suddivisione del treno verranno archiviati in questo file di cache anziché nel nome del file di cache generato automaticamente.
  • test_cache_file_name (str, opzionale)
    • Questo parametro consente di fornire un percorso o un nome specifico per il file di cache che memorizza gli indici di suddivisione del test.
    • Se è specificato, gli indici di suddivisione del test verranno archiviati in questo file di cache anziché nel nome del file di cache generato automaticamente.
  • writer_batch_size (int, il valore predefinito è 1000)
    • Questo parametro determina il numero di righe per operazione di scrittura per il writer del file di cache.
    • È un compromesso tra l'utilizzo della memoria e la velocità di elaborazione.
    • Valori più alti riducono il numero di operazioni di scrittura ma consumano più memoria durante l'elaborazione.
    • Valori più bassi consumano meno memoria temporanea ma potrebbero influenzare leggermente la velocità di elaborazione.
  • train_new_fingerprint (str, opzionale, il valore predefinito è Nessuno)
    • Questo parametro rappresenta la nuova impronta digitale del convoglio dopo aver applicato una trasformazione.
    • Se specificato, fornisce una nuova impronta digitale per il convoglio.
    • Se è impostato su None, la nuova impronta digitale viene calcolata utilizzando un hash dell'impronta digitale precedente e gli argomenti di trasformazione.
  • test_new_fingerprint (str, opzionale, il valore predefinito è Nessuno)
    • Questo parametro rappresenta la nuova impronta digitale del set di test dopo l'applicazione di una trasformazione.
    • Se specificato, fornisce una nuova impronta digitale per il set di test.
    • Se è impostato su None, la nuova impronta digitale viene calcolata utilizzando un hash dell'impronta digitale precedente e gli argomenti di trasformazione.

    Sintassi:

    da sklearn.model_selection import train_test_split

    X_treno, X_test, y_treno, y_test = treno_test_split(X, y, test_size=0.2, random_state=42)

    X : rappresenta le caratteristiche di input o le variabili indipendenti del set di dati.



    • E : rappresenta l'output o la variabile dipendente che stai tentando di prevedere.
    • prova_dimensione : questo parametro determina la proporzione del set di dati che verrà allocata per il test. Può essere specificato come numero in virgola mobile (ad esempio, 0,2 per 20%) o come numero intero (ad esempio, 200 per 200 campioni).
    • stato_casuale : Questo è un parametro facoltativo che consente di impostare un seme per il generatore di numeri casuali. Garantisce che la suddivisione sia riproducibile, il che significa che otterrai la stessa suddivisione se utilizzi lo stesso valore di stato casuale.

    La funzione train_test_split restituisce quattro set di dati:





    • X_treno : il set di training delle funzionalità di input.
    • X_prova : l'insieme di test delle funzionalità di input.
    • y_treno : il set di training delle etichette di output.
    • y_prova : il set di test delle etichette di output.

    Esempio : Il seguente programma esempio viene salvato come “ test.py ”.

    da sklearn.model_selection import train_test_split

    dai set di dati importa load_dataset

    # Passaggio 1: caricare il set di dati

    set di dati = caricamento_dataset('imdb')

    X = set di dati['treno']['testo']

    y = set di dati['treno']['etichetta']

    # Passaggio 2: dividere il set di dati

    X_treno, X_test, y_treno, y_test = treno_test_split(X, y, dimensione_test=0.2,

    riproduzione casuale=Vero, stato_casuale=42)

    # Passaggio 3: esplora il set di dati

    print('Numero di esempi nel set di dati originale:', len(X))

    print('Numero di esempi nel set di dati del treno:', len(X_train))

    print('Numero di esempi nel set di dati di test:', len(X_test))

    # Passaggio 4: accedere e stampare i dati di esempio

    print('\nEsempio dal set di dati del treno:')

    print(Treno_X[0], treno_y[0])

    print('\nEsempio dal set di dati di test:')

    stampa(X_prova[0], y_prova[0])

    Questa istruzione di importazione proviene da scikit-learn, non dalla libreria di set di dati Hugging Face. Assicurati di avere scikit-learn installato nel tuo ambiente. Puoi installarlo usando il seguente comando:



    pip installa scikit-learn

    Spiegazione: innanzitutto importiamo il modulo necessario: train_test_split da scikit-learn.

    • Carichiamo il set di dati IMDb utilizzando load_dataset('imdb') e lo assegniamo alla variabile del set di dati.
    • Per utilizzare train_test_split, dobbiamo separare le caratteristiche di input (X) e le etichette corrispondenti (y). In questo caso, presupponiamo che il set di dati abbia una suddivisione denominata 'treno' con 'testo' come caratteristiche di input e 'etichetta' come etichette corrispondenti. Potrebbe essere necessario modificare le chiavi in ​​base alla struttura del set di dati.
    • Passiamo quindi le funzionalità di input (X) e le etichette (y) a train_test_split insieme ad altri parametri. In questo esempio, impostiamo test_size su 0,2, il che significa che il 20% dei dati verrà allocato per il test. Il parametro shuffle è impostato su 'True' per mescolare casualmente i dati prima della suddivisione e il parametro random_state è impostato su 42 per la riproducibilità.
    • La funzione train_test_split restituisce quattro set di dati: X_train, X_test, y_train e y_test. Questi rappresentano rispettivamente i sottoinsiemi di training e testing delle funzionalità di input e delle etichette.
    • Stampiamo il numero di esempi nel set di dati originale (len(X)), nel set di dati di training (len(X_train)) e nel set di dati di test (len(X_test)). Questo ci consente di verificare il processo di suddivisione e garantire che i sottoinsiemi vengano creati correttamente.
    • Infine, accediamo e stampiamo un esempio dal dataset di training (X_train[0], y_train[0]) e un esempio dal dataset di test (X_test[0], y_test[0]).

    Produzione : Eseguiamo il programma precedentemente salvato utilizzando il Python “test.py”.

    Conclusione

    La funzionalità di suddivisione train-test fornita dalla libreria di set di dati di Hugging Face, in combinazione con la funzione train_test_split di scikit-learn, offre un modo comodo ed efficiente per dividere un set di dati in sottoinsiemi di training e test separati.

    Utilizzando la funzione train_test_split, è possibile controllare la dimensione del set di test, se mescolare i dati e impostare un seme casuale per la riproducibilità. Questa flessibilità consente una valutazione efficace dei modelli di machine learning su dati invisibili e aiuta a rilevare problemi come l'overfitting o l'underfitting.

    I parametri della funzione train_test_split consentono di controllare vari aspetti della suddivisione come la dimensione del set di test (test_size), il mescolamento dei dati (shuffle) e l'esecuzione di una suddivisione stratificata in base a colonne specifiche (stratify_by_column). Inoltre, è possibile specificare un valore seed (seed) per la riproducibilità e personalizzare i nomi dei file di cache per archiviare gli indici divisi (train_cache_file_name e test_cache_file_name).

    La funzionalità offerta da Hugging Face semplifica la preparazione dei dati per l'addestramento e la valutazione del modello. Avendo sottoinsiemi separati di training e test, puoi valutare con precisione le prestazioni del tuo modello su dati invisibili, rilevare potenziali problemi come l'overfitting e prendere decisioni informate per miglioramenti del modello.

    Nel complesso, la funzionalità di suddivisione train-test nella libreria di set di dati di Hugging Face, insieme a train_test_split di scikit-learn, fornisce un potente set di strumenti per un'efficiente suddivisione dei dati, valutazione del modello e sviluppo di robuste soluzioni di machine learning.