Hugging Face Train și Split Dataset

Hugging Face Train Si Split Dataset



Biblioteca Hugging Face nu are o funcție specifică numită train_test_split. Cu toate acestea, când vine vorba de împărțirea datelor pentru instruire și testare în sarcinile de învățare automată, funcția train_test_split este folosită în mod obișnuit în alte biblioteci populare, cum ar fi scikit-learn. Aici, vom explica parametrii care sunt utilizați de obicei în funcția train_test_split de la scikit-learn.

Metoda train_test_split din biblioteca de date Hugging Face este folosită pentru a împărți un set de date în două subseturi: un subset de antrenament și un subset de testare. Această metodă este folosită în mod obișnuit în învățarea automată pentru a evalua performanța unui model pe date nevăzute. Subsetul de antrenament este utilizat pentru a antrena modelul, în timp ce subsetul de testare este utilizat pentru a evalua performanța și capacitățile sale de generalizare.







Iată o prezentare generală a metodei train_test_split în Hugging Face:



  1. test_size (numpy.random.Generator, opțional) : Mărimea diviziunii de test este determinată de această opțiune. Tipul poate fi float sau întreg.
  • Dacă este dat sub formă de float, ar trebui să reflecte procentul setului de date de inclus în împărțirea testului și să fie între 0,0 și 1,0.
  • Numărul exact de probe de testare este reprezentat de valoarea dacă este furnizat ca număr întreg.
  • Dacă este setată la Niciunul, complementul mărimii trenului este utilizat ca valoare.
  • Dacă train_size este, de asemenea, None, va fi setat la 0,25 (25% din setul de date).
  • Train_size (numpy.random.Generator, opțional): Mărimea împărțirii trenului este determinată de acest parametru. Urmează aceleași recomandări ca și test_size.
    • Dacă este dat ca un float, ar trebui să reflecte procentul setului de date de inclus în diviziunea trenului și să fie între 0,0 și 1,0.
    • Numărul exact de mostre de tren este reprezentat de valoarea dacă este furnizat ca număr întreg.
    • Dacă este setată la Niciunul, valoarea este schimbată automat în complementul mărimii testului.
  • shuffle (bool, opțional, implicit la True)
    • Acest parametru determină dacă se amestecă sau nu datele înainte de împărțire.
    • Dacă este setat la True, datele vor fi amestecate aleatoriu înainte de împărțire.
    • Dacă este setat la Fals, datele vor fi împărțite fără amestecare.
  • stratify_by_column (str, opțional, implicit la None)
    • Acest parametru este utilizat pentru împărțirea stratificată a datelor pe baza unei anumite coloane.
    • Dacă este specificat, ar trebui să fie numele coloanei etichetelor sau claselor.
    • Datele vor fi împărțite într-un mod care să mențină aceeași distribuție a etichetelor sau claselor în tren și în secțiunile de testare.
  • sămânță (int, opțional)
    • Acest parametru vă permite să setați un seed pentru a inițializa BitGenerator implicit.
    • Dacă este setată la Niciunul, o entropie nouă, imprevizibilă va fi extrasă din sistemul de operare.
    • Dacă sunt transmise un număr întreg sau numere întregi asemănătoare matrice, acestea vor fi utilizate pentru a deriva starea inițială a BitGenerator.
  • generator (numpy.random.Generator, opțional)
    • Acest parametru vă permite să specificați un generator aleator NumPy pentru a calcula permutarea rândurilor setului de date.
    • Dacă este setat la None (implicit), folosește np.random.default_rng, care este BitGenerator implicit (PCG64) al NumPy.
  • keep_in_memory (bool, implicit la False)
    • Acest parametru determină dacă se păstrează indicii împărțiți în memorie în loc să îi scrie într-un fișier cache.
    • Dacă este setată la True, indicii împărțiți vor fi stocați în memorie în timpul procesului de împărțire.
    • Dacă este setat la Fals, indicii împărțiți vor fi scrieți într-un fișier cache pentru utilizare ulterioară.
  • load_from_cache_file (Opțional[bool], implicit este True dacă stocarea în cache este activată)
    • Acest parametru determină dacă se utilizează un fișier cache pentru a încărca indicii împărțiți în loc să-i recalculeze.
    • Dacă este setat la True și poate fi identificat un fișier cache care stochează indicii împărțiți, acesta va fi utilizat.
    • Dacă este setat la Fals, indicii împărțiți vor fi recalculați chiar dacă există un fișier cache.
    • Valoarea implicită este True dacă stocarea în cache este activată.
  • train_cache_file_name (str, opțional)
    • Acest parametru vă permite să furnizați o cale sau un nume specific pentru fișierul cache care stochează indicii de împărțire a trenului.
    • Dacă este specificat, indicii de împărțire a trenului vor fi stocați în acest fișier cache în loc de numele fișierului cache generat automat.
  • test_cache_file_name (str, opțional)
    • Acest parametru vă permite să furnizați o cale sau un nume specific pentru fișierul cache care stochează indicii de împărțire de testare.
    • Dacă este specificat, indicii de împărțire de testare vor fi stocați în acest fișier cache în loc de numele fișierului cache generat automat.
  • writer_batch_size (int, implicit la 1000)
    • Acest parametru determină numărul de rânduri per operațiune de scriere pentru scriitorul de fișiere cache.
    • Este un compromis între utilizarea memoriei și viteza de procesare.
    • Valorile mai mari reduc numărul de operațiuni de scriere, dar consumă mai multă memorie în timpul procesării.
    • Valorile mai mici consumă mai puțină memorie temporară, dar pot afecta ușor viteza de procesare.
  • train_new_fingerprint (str, opțional, implicit la Niciunul)
    • Acest parametru reprezintă noua amprentă a garniturii după aplicarea unei transformări.
    • Dacă este specificat, oferă o nouă amprentă pentru garnitura de tren.
    • Dacă este setată la Niciunul, noua amprentă este calculată folosind un hash al amprentei anterioare și argumentele de transformare.
  • test_new_fingerprint (str, opțional, implicit la None)
    • Acest parametru reprezintă noua amprentă a setului de test după aplicarea unei transformări.
    • Dacă este specificat, oferă o nouă amprentă pentru setul de testare.
    • Dacă este setată la Niciunul, noua amprentă este calculată folosind un hash al amprentei anterioare și argumentele de transformare.

    Sintaxă:

    din sklearn.model_selection import train_test_split

    X_train, X_test, y_train, y_test = tren_test_split(X, y, test_size=0,2, random_state=42)

    X : Aceasta reprezintă caracteristicile de intrare sau variabilele independente ale setului dvs. de date.



    • și : Aceasta reprezintă ieșirea sau variabila dependentă pe care încercați să o preziceți.
    • test_size : Acest parametru determină proporția din setul de date care va fi alocată pentru testare. Poate fi specificat ca un float (de exemplu, 0,2 pentru 20%) sau un număr întreg (de exemplu, 200 pentru 200 de mostre).
    • stare_aleatorie : Acesta este un parametru opțional care vă permite să setați o sămânță pentru generatorul de numere aleatorii. Acesta asigură că împărțirea este reproductibilă, ceea ce înseamnă că veți obține aceeași împărțire dacă utilizați aceeași valoare de stare aleatorie.

    Funcția train_test_split returnează patru seturi de date:





    • X_tren : Setul de antrenament al caracteristicilor de intrare.
    • X_test : Setul de testare al caracteristicilor de intrare.
    • y_train : Setul de antrenament al etichetelor de ieșire.
    • y_test : Setul de testare al etichetelor de ieșire.

    Exemplu : Următorul exemplu de program este salvat ca „ test.py ”.

    din sklearn.model_selection import train_test_split

    din seturi de date import load_dataset

    # Pasul 1: Încărcați setul de date

    set de date = load_dataset('imdb')

    X = set de date['tren']['text']

    y = set de date['tren']['etichetă']

    # Pasul 2: Împărțiți setul de date

    X_train, X_test, y_train, y_test = tren_test_split(X, y, test_size=0,2,

    shuffle=Adevărat, stare_aleatorie=42)

    # Pasul 3: Explorați setul de date

    print('Numărul de exemple din setul de date original:', len(X))

    print('Numărul de exemple din setul de date tren:', len(X_train))

    print('Numărul de exemple din setul de date de testare:', len(X_test))

    # Pasul 4: Accesați și imprimați date exemple

    print('\nExemplu din setul de date tren:')

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

    print('\nExemplu din setul de date de testare:')

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

    Această declarație de import este din scikit-learn, nu din biblioteca de seturi de date Hugging Face. Vă rugăm să vă asigurați că ați instalat scikit-learn în mediul dumneavoastră. Îl puteți instala folosind următoarea comandă:



    pip install scikit-learn

    Explicație: În primul rând, importăm modulul necesar: train_test_split din scikit-learn.

    • Încărcăm setul de date IMDb folosind load_dataset(‘imdb’) și îl atribuim variabilei setului de date.
    • Pentru a folosi train_test_split, trebuie să separăm caracteristicile de intrare (X) și etichetele corespunzătoare (y). În acest caz, presupunem că setul de date are o împărțire numită „tren” cu „text” ca caracteristici de intrare și „etichetă” ca etichete corespunzătoare. Poate fi necesar să ajustați cheile în funcție de structura setului de date.
    • Apoi trecem caracteristicile de intrare (X) și etichetele (y) la train_test_split împreună cu alți parametri. În acest exemplu, setăm test_size la 0,2, ceea ce înseamnă că 20% din date vor fi alocate pentru testare. Parametrul shuffle este setat la „True” pentru a amesteca aleatoriu datele înainte de împărțire, iar parametrul random_state este setat la 42 pentru reproductibilitate.
    • Funcția train_test_split returnează patru seturi de date: X_train, X_test, y_train și y_test. Acestea reprezintă subseturile de instruire și testare ale caracteristicilor de intrare și, respectiv, etichetelor.
    • Tipărim numărul de exemple din setul de date original (len(X)), setul de date de antrenament (len(X_train)) și setul de date de testare (len(X_test)). Acest lucru ne permite să verificăm procesul de împărțire și să ne asigurăm că subseturile sunt create corect.
    • În cele din urmă, accesăm și imprimăm un exemplu din setul de date de antrenament (X_train[0], y_train[0]) și un exemplu din setul de date de testare (X_test[0], y_test[0]).

    Ieșire : Rulăm programul salvat anterior folosind Python „test.py”.

    Concluzie

    Funcționalitatea de împărțire a testului de tren, care este oferită de biblioteca de seturi de date Hugging Face, în combinație cu funcția train_test_split a scikit-learn, oferă o modalitate convenabilă și eficientă de a împărți un set de date în subseturi separate de antrenament și testare.

    Utilizând funcția train_test_split, puteți controla dimensiunea setului de testare, dacă să amestecați datele și să setați o generație aleatorie pentru reproductibilitate. Această flexibilitate permite evaluarea eficientă a modelelor de învățare automată pe date nevăzute și ajută la detectarea problemelor cum ar fi supraadaptarea sau subadaptarea.

    Parametrii funcției train_test_split vă permit să controlați diferite aspecte ale împărțirii, cum ar fi dimensiunea setului de testare (test_size), amestecarea datelor (shuffle) și efectuarea unei împărțiri stratificate pe baza unor coloane specifice (stratify_by_column). În plus, puteți specifica o valoare de bază (seed) pentru reproductibilitate și puteți personaliza numele fișierelor cache pentru stocarea indicilor împărțiți (train_cache_file_name și test_cache_file_name).

    Funcționalitatea oferită de Hugging Face facilitează pregătirea datelor pentru instruirea și evaluarea modelului. Având subseturi separate de instruire și testare, puteți evalua cu precizie performanța modelului dvs. pe date nevăzute, puteți detecta probleme potențiale, cum ar fi supraadaptarea și puteți lua decizii informate pentru îmbunătățirea modelului.

    În general, funcționalitatea de împărțire a testului de tren din biblioteca de seturi de date Hugging Face, împreună cu train_test_split de la scikit-learn, oferă un set de instrumente puternic pentru împărțirea eficientă a datelor, evaluarea modelului și dezvoltarea de soluții robuste de învățare automată.