Hugging Face Train i Split Dataset

Hugging Face Train I Split Dataset



La biblioteca Hugging Face no té una funció específica anomenada train_test_split. Tanmateix, quan es tracta de dividir les dades per entrenar i provar en tasques d'aprenentatge automàtic, la funció train_test_split s'utilitza habitualment en altres biblioteques populars, com ara scikit-learn. Aquí, explicarem els paràmetres que s'utilitzen normalment a la funció train_test_split de scikit-learn.

El mètode train_test_split de la biblioteca de conjunts de dades d'Hugging Face s'utilitza per dividir un conjunt de dades en dos subconjunts: un subconjunt d'entrenament i un subconjunt de proves. Aquest mètode s'utilitza habitualment en l'aprenentatge automàtic per avaluar el rendiment d'un model sobre dades no vistes. El subconjunt d'entrenament s'utilitza per entrenar el model, mentre que el subconjunt de prova s'utilitza per avaluar el seu rendiment i capacitats de generalització.







Aquí teniu una visió general del mètode train_test_split a Hugging Face:



  1. test_size (numpy.random.Generator, opcional) : La mida de la divisió de prova ve determinada per aquesta opció. El tipus pot ser flotant o enter.
  • Si es dóna com a variable, hauria de reflectir el percentatge del conjunt de dades que s'ha d'incloure a la divisió de prova i estar entre 0,0 i 1,0.
  • El nombre exacte de mostres de prova es representa pel valor si es proporciona com un nombre enter.
  • Si s'estableix en Cap, s'utilitza el complement de la mida del tren com a valor.
  • Si el train_size també és Cap, s'establirà en 0,25 (25% del conjunt de dades).
  • mida_tren (numpy.random.Generator, opcional): La mida de la divisió del tren ve determinada per aquest paràmetre. Segueix les mateixes directrius que test_size.
    • Si es dóna com a flotant, hauria de reflectir el percentatge del conjunt de dades que cal incloure a la divisió del tren i estar entre 0,0 i 1,0.
    • El nombre exacte de mostres de tren es representa pel valor si es proporciona com un nombre enter.
    • Si s'estableix en Cap, el valor es canvia automàticament al complement de la mida de la prova.
  • shuffle (bool, opcional, per defecte a True)
    • Aquest paràmetre determina si es barregen o no les dades abans de dividir-les.
    • Si s'estableix en True, les dades es barrejaran aleatòriament abans de la divisió.
    • Si s'estableix com a Fals, les dades es dividiran sense barrejar-les.
  • stratify_by_column (str, opcional, per defecte Cap)
    • Aquest paràmetre s'utilitza per a la divisió estratificada de dades en funció d'una columna específica.
    • Si s'especifica, hauria de ser el nom de columna de les etiquetes o classes.
    • Les dades es repartiran de manera que es mantingui la mateixa distribució d'etiquetes o classes al tren i a les proves.
  • llavor (int, opcional)
    • Aquest paràmetre us permet establir una llavor per inicialitzar el BitGenerator predeterminat.
    • Si s'estableix a Cap, s'extraurà una entropia nova i impredictible del sistema operatiu.
    • Si es passa un nombre enter o enters semblants a una matriu, s'utilitzaran per derivar l'estat inicial de BitGenerator.
  • generador (numpy.random.Generator, opcional)
    • Aquest paràmetre us permet especificar un generador aleatori NumPy per calcular la permutació de les files del conjunt de dades.
    • Si s'estableix en Cap (per defecte), utilitza el np.random.default_rng que és el BitGenerator (PCG64) per defecte de NumPy.
  • keep_in_memory (bool, per defecte a False)
    • Aquest paràmetre determina si s'han de mantenir els índexs dividits a la memòria en lloc d'escriure'ls en un fitxer de memòria cau.
    • Si s'estableix en True, els índexs dividits s'emmagatzemaran a la memòria durant el procés de divisió.
    • Si s'estableix en Fals, els índexs dividits s'escriuran en un fitxer de memòria cau per utilitzar-los posteriorment.
  • load_from_cache_file (Opcional[bool], el valor predeterminat és True si la memòria cau està activada)
    • Aquest paràmetre determina si s'utilitza un fitxer de memòria cau per carregar els índexs dividits en lloc de tornar-los a calcular.
    • Si s'estableix en True i es pot identificar un fitxer de memòria cau que emmagatzema els índexs dividits, s'utilitzarà.
    • Si s'estableix en Fals, els índexs dividits es tornaran a calcular encara que existeixi un fitxer de memòria cau.
    • El valor per defecte és True si la memòria cau està activada.
  • train_cache_file_name (str, opcional)
    • Aquest paràmetre us permet proporcionar un camí o nom específic per al fitxer de memòria cau que emmagatzema els índexs de divisió del tren.
    • Si s'especifica, els índexs de divisió del tren s'emmagatzemaran en aquest fitxer de memòria cau en lloc del nom del fitxer de memòria cau generat automàticament.
  • test_cache_file_name (str, opcional)
    • Aquest paràmetre us permet proporcionar un camí o nom específic per al fitxer de memòria cau que emmagatzema els índexs de divisió de prova.
    • Si s'especifica, els índexs de divisió de prova s'emmagatzemaran en aquest fitxer de memòria cau en lloc del nom del fitxer de memòria cau generat automàticament.
  • writer_batch_size (int, el valor predeterminat és 1000)
    • Aquest paràmetre determina el nombre de files per operació d'escriptura per a l'escriptor de fitxers de memòria cau.
    • És una compensació entre l'ús de la memòria i la velocitat de processament.
    • Els valors més alts redueixen el nombre d'operacions d'escriptura, però consumeixen més memòria durant el processament.
    • Els valors més baixos consumeixen menys memòria temporal, però poden afectar lleugerament la velocitat de processament.
  • train_new_fingerprint (str, opcional, el valor predeterminat és Cap)
    • Aquest paràmetre representa la nova empremta digital del conjunt de trens després d'aplicar una transformació.
    • Si s'especifica, proporciona una nova empremta digital per al conjunt de trens.
    • Si s'estableix en Cap, la nova empremta digital es calcula utilitzant un hash de l'empremta anterior i els arguments de transformació.
  • test_new_fingerprint (str, opcional, el valor predeterminat és Cap)
    • Aquest paràmetre representa la nova empremta digital del conjunt de prova després d'aplicar una transformació.
    • Si s'especifica, proporciona una nova empremta digital per al conjunt de prova.
    • Si s'estableix en Cap, la nova empremta digital es calcula utilitzant un hash de l'empremta anterior i els arguments de transformació.

    Sintaxi:

    des de 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 : representa les característiques d'entrada o les variables independents del vostre conjunt de dades.



    • i : representa la sortida o la variable dependent que esteu intentant predir.
    • mida_prova : aquest paràmetre determina la proporció del conjunt de dades que s'assignarà per a la prova. Es pot especificar com a flotant (p. ex., 0,2 per al 20%) o un nombre enter (p. ex., 200 per a 200 mostres).
    • estat_aleatori : Aquest és un paràmetre opcional que us permet establir una llavor per al generador de números aleatoris. Assegura que la divisió és reproduïble, la qual cosa significa que obtindreu la mateixa divisió si utilitzeu el mateix valor d'estat aleatori.

    La funció train_test_split retorna quatre conjunts de dades:





    • X_tren : el conjunt d'entrenament de les característiques d'entrada.
    • X_prova : el conjunt de prova de funcions d'entrada.
    • i_train : el conjunt d'entrenament d'etiquetes de sortida.
    • y_prova : el conjunt de prova d'etiquetes de sortida.

    Exemple : El programa d'exemple següent es desa com a “ test.py ”.

    des de sklearn.model_selection import train_test_split

    des de conjunts de dades import load_dataset

    # Pas 1: Carregueu el conjunt de dades

    conjunt de dades = load_dataset('imdb')

    X = conjunt de dades['tren']['text']

    y = conjunt de dades['tren']['etiqueta']

    # Pas 2: dividiu el conjunt de dades

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

    shuffle=True, estat_aleatori=42)

    # Pas 3: Exploreu el conjunt de dades

    print('Nombre d'exemples al conjunt de dades original:', len(X))

    print('Nombre d'exemples al conjunt de dades del tren:', len(X_train))

    print('Nombre d'exemples al conjunt de dades de prova:', len(X_test))

    # Pas 4: Accediu i imprimiu dades d'exemple

    print('\nExemple del conjunt de dades del tren:')

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

    print('\nExemple del conjunt de dades de prova:')

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

    Aquesta declaració d'importació és de scikit-learn, no de la biblioteca de conjunts de dades Hugging Face. Assegureu-vos que teniu scikit-learn instal·lat al vostre entorn. Podeu instal·lar-lo mitjançant l'ordre següent:



    pip install scikit-learn

    Explicació: primer, importem el mòdul necessari: train_test_split de scikit-learn.

    • Carreguem el conjunt de dades IMDb mitjançant load_dataset('imdb') i l'assignem a la variable del conjunt de dades.
    • Per utilitzar el train_test_split, hem de separar les característiques d'entrada (X) i les etiquetes corresponents (y). En aquest cas, suposem que el conjunt de dades té una divisió anomenada 'tren' amb 'text' com a característiques d'entrada i 'etiqueta' com a etiquetes corresponents. És possible que hàgiu d'ajustar les claus en funció de l'estructura del vostre conjunt de dades.
    • A continuació, passem les característiques d'entrada (X) i les etiquetes (y) al train_test_split juntament amb altres paràmetres. En aquest exemple, establim el test_size a 0,2, la qual cosa significa que el 20% de les dades s'assignaran per a la prova. El paràmetre shuffle s'estableix en 'True' per barrejar aleatòriament les dades abans de dividir-los, i el paràmetre random_state s'estableix en 42 per a la reproductibilitat.
    • La funció train_test_split retorna quatre conjunts de dades: X_train, X_test, y_train i y_test. Aquests representen els subconjunts d'entrenament i de prova de les característiques i etiquetes d'entrada, respectivament.
    • Imprimim el nombre d'exemples al conjunt de dades original (len(X)), al conjunt de dades d'entrenament (len(X_train)) i al conjunt de dades de prova (len(X_test)). Això ens permet verificar el procés de divisió i assegurar-nos que els subconjunts es creen correctament.
    • Finalment, accedim i imprimim un exemple del conjunt de dades d'entrenament (X_train[0], y_train[0]) i un exemple del conjunt de dades de prova (X_test[0], y_test[0]).

    Sortida : Executem el programa desat anteriorment utilitzant el Python “test.py”.

    Conclusió

    La funcionalitat de divisió de proves de tren que proporciona la biblioteca de conjunts de dades d'Hugging Face, en combinació amb la funció train_test_split de scikit-learn, ofereix una manera còmoda i eficient de dividir un conjunt de dades en subconjunts d'entrenament i proves separats.

    Mitjançant la funció train_test_split, podeu controlar la mida del conjunt de proves, si voleu barrejar les dades i establir una llavor aleatòria per a la reproductibilitat. Aquesta flexibilitat permet una avaluació eficaç dels models d'aprenentatge automàtic sobre dades no vistes i ajuda a detectar problemes com ara l'ajustament excessiu o insuficient.

    Els paràmetres de la funció train_test_split us permeten controlar diversos aspectes de la divisió, com ara la mida del conjunt de proves (test_size), barrejar les dades (shuffle) i realitzar una divisió estratificada basada en columnes específiques (stratify_by_column). A més, podeu especificar un valor inicial (llavor) per a la reproductibilitat i personalitzar els noms dels fitxers de memòria cau per emmagatzemar els índexs dividits (nom_fitxer_tren_cache_nom i nom_fitxer_cache_test).

    La funcionalitat que ofereix Hugging Face facilita la preparació de les vostres dades per a l'entrenament i l'avaluació del model. En tenir subconjunts d'entrenament i proves separats, podeu avaluar amb precisió el rendiment del vostre model amb dades no vistes, detectar possibles problemes com ara el sobreajustament i prendre decisions informades per millorar el model.

    En general, la funcionalitat de divisió de proves de tren a la biblioteca de conjunts de dades d'Hugging Face, juntament amb train_test_split de scikit-learn, proporciona un conjunt d'eines potents per a la divisió eficient de dades, l'avaluació de models i el desenvolupament de solucions robustes d'aprenentatge automàtic.