Nakayakap sa Mukha na Tren at Split Dataset

Nakayakap Sa Mukha Na Tren At Split Dataset



Ang Hugging Face library ay walang partikular na function na pinangalanang train_test_split. Gayunpaman, pagdating sa paghahati ng data para sa pagsasanay at pagsubok sa mga gawain sa pag-aaral ng makina, ang function na train_test_split ay karaniwang ginagamit sa iba pang sikat na library gaya ng scikit-learn. Dito, ipapaliwanag namin ang mga parameter na karaniwang ginagamit sa function na train_test_split mula sa scikit-learn.

Ang paraan ng train_test_split sa dataset library ng Hugging Face ay ginagamit upang hatiin ang isang dataset sa dalawang subset: isang subset ng pagsasanay at isang subset ng pagsubok. Ang paraang ito ay karaniwang ginagamit sa machine learning upang suriin ang performance ng isang modelo sa hindi nakikitang data. Ginagamit ang subset ng pagsasanay upang sanayin ang modelo, habang ginagamit ang subset ng pagsubok upang tasahin ang mga kakayahan nito sa pagganap at paglalahat.







Narito ang isang pangkalahatang-ideya ng paraan ng train_test_split sa Hugging Face:



  1. test_size (numpy.random.Generator, opsyonal) : Ang laki ng test split ay tinutukoy ng opsyong ito. Ang uri ay maaaring alinman sa float o integer.
  • Kung ibibigay ito bilang float, dapat itong ipakita ang porsyento ng dataset na isasama sa test split at nasa pagitan ng 0.0 at 1.0.
  • Ang eksaktong bilang ng mga sample ng pagsubok ay kinakatawan ng halaga kung ito ay ibinibigay bilang isang integer.
  • Kung ito ay nakatakda sa Wala, ang pandagdag sa laki ng tren ay gagamitin bilang halaga.
  • Kung ang train_size ay Wala rin, itatakda ito sa 0.25 (25% ng dataset).
  • train_size (numpy.random.Generator, opsyonal): Ang laki ng split ng tren ay tinutukoy ng parameter na ito. Sumusunod ito sa parehong mga alituntunin gaya ng test_size.
    • Kung ibibigay ito bilang float, dapat itong ipakita ang porsyento ng dataset na isasama sa split ng tren at nasa pagitan ng 0.0 at 1.0.
    • Ang eksaktong bilang ng mga sample ng tren ay kinakatawan ng halaga kung ito ay ibinibigay bilang isang integer.
    • Kung itatakda ito sa Wala, awtomatikong babaguhin ang halaga sa pandagdag ng sukat ng pagsubok.
  • shuffle (bool, opsyonal, mga default sa True)
    • Tinutukoy ng parameter na ito kung isa-shuffle o hindi ang data bago hatiin.
    • Kung itatakda ito sa True, random na isa-shuffle ang data bago ang hati.
    • Kung itatakda ito sa False, hahatiin ang data nang hindi binabasa.
  • stratify_by_column (str, opsyonal, default sa Wala)
    • Ginagamit ang parameter na ito para sa stratified splitting ng data batay sa isang partikular na column.
    • Kung ito ay tinukoy, ito dapat ang pangalan ng column ng mga label o klase.
    • Hahatiin ang data sa paraang nagpapanatili ng parehong pamamahagi ng mga label o klase sa mga split ng tren at pagsubok.
  • buto (int, opsyonal)
    • Binibigyang-daan ka ng parameter na ito na magtakda ng isang binhi upang simulan ang default na BitGenerator.
    • Kung ito ay nakatakda sa Wala, isang bago, hindi nahuhulaang entropy ang kukunin mula sa operating system.
    • Kung ang isang integer o array-like integer ay naipasa, gagamitin ang mga ito upang makuha ang paunang estado ng BitGenerator.
  • generator (numpy.random.Generator, opsyonal)
    • Binibigyang-daan ka ng parameter na ito na tumukoy ng NumPy random generator para kalkulahin ang permutation ng mga row ng dataset.
    • Kung ito ay nakatakda sa Wala (default), ginagamit nito ang np.random.default_rng na siyang default na BitGenerator (PCG64) ng NumPy.
  • keep_in_memory (bool, default sa False)
    • Tinutukoy ng parameter na ito kung pananatilihin ang mga split index sa memorya sa halip na isulat ang mga ito sa isang cache file.
    • Kung ito ay nakatakda sa True, ang mga split index ay maiimbak sa memorya sa panahon ng proseso ng paghahati.
    • Kung ito ay nakatakda sa False, ang mga split index ay isusulat sa isang cache file para magamit sa ibang pagkakataon.
  • load_from_cache_file (Opsyonal[bool], default sa True kung pinagana ang caching)
    • Tinutukoy ng parameter na ito kung gagamit ng cache file upang i-load ang mga split index sa halip na i-compute muli ang mga ito.
    • Kung ito ay nakatakda sa True at isang cache file na nag-iimbak ng mga split index ay maaaring makilala, ito ay gagamitin.
    • Kung ito ay nakatakda sa False, ang mga split index ay muling kinukuwenta kahit na mayroong cache file.
    • Ang default na halaga ay True kung ang pag-cache ay pinagana.
  • train_cache_file_name (str, opsyonal)
    • Binibigyang-daan ka ng parameter na ito na magbigay ng partikular na landas o pangalan para sa cache file na nag-iimbak ng mga indeks ng split ng tren.
    • Kung ito ay tinukoy, ang mga train split index ay maiimbak sa cache file na ito sa halip na ang awtomatikong nabuong pangalan ng cache file.
  • test_cache_file_name (str, opsyonal)
    • Binibigyang-daan ka ng parameter na ito na magbigay ng partikular na landas o pangalan para sa cache file na nag-iimbak ng mga indeks ng split ng pagsubok.
    • Kung ito ay tinukoy, ang mga test split index ay maiimbak sa cache file na ito sa halip na ang awtomatikong nabuong pangalan ng cache file.
  • writer_batch_size (int, default sa 1000)
    • Tinutukoy ng parameter na ito ang bilang ng mga row sa bawat write operation para sa cache file writer.
    • Ito ay isang trade-off sa pagitan ng paggamit ng memorya at bilis ng pagproseso.
    • Binabawasan ng mas mataas na mga halaga ang bilang ng mga pagpapatakbo ng pagsulat ngunit kumokonsumo ng mas maraming memory sa panahon ng pagproseso.
    • Ang mas mababang halaga ay gumagamit ng mas kaunting pansamantalang memorya ngunit maaaring bahagyang makaapekto sa bilis ng pagproseso.
  • train_new_fingerprint (str, opsyonal, default sa Wala)
    • Kinakatawan ng parameter na ito ang bagong fingerprint ng set ng tren pagkatapos maglapat ng pagbabago.
    • Kung ito ay tinukoy, nagbibigay ito ng bagong fingerprint para sa set ng tren.
    • Kung ito ay nakatakda sa Wala, ang bagong fingerprint ay kinukuwenta gamit ang isang hash ng nakaraang fingerprint at ang mga argumento ng pagbabago.
  • test_new_fingerprint (str, opsyonal, default sa Wala)
    • Kinakatawan ng parameter na ito ang bagong fingerprint ng set ng pagsubok pagkatapos maglapat ng pagbabago.
    • Kung ito ay tinukoy, nagbibigay ito ng bagong fingerprint para sa test set.
    • Kung ito ay nakatakda sa Wala, ang bagong fingerprint ay kinukuwenta gamit ang isang hash ng nakaraang fingerprint at ang mga argumento ng pagbabago.

    Syntax:

    mula sa 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 : Kinakatawan nito ang mga feature ng input o mga independent variable ng iyong dataset.



    • at : Kinakatawan nito ang output o dependent variable na sinusubukan mong hulaan.
    • test_size : Tinutukoy ng parameter na ito ang proporsyon ng dataset na ilalaan para sa pagsubok. Maaari itong tukuyin bilang float (hal., 0.2 para sa 20%) o isang integer (hal., 200 para sa 200 sample).
    • random_state : Ito ay isang opsyonal na parameter na nagbibigay-daan sa iyong magtakda ng isang binhi para sa random na generator ng numero. Tinitiyak nito na ang split ay maaaring kopyahin na nangangahulugan na makakakuha ka ng parehong split kung gagamitin mo ang parehong random na halaga ng estado.

    Ang train_test_split function ay nagbabalik ng apat na set ng data:





    • X_tren : Ang hanay ng pagsasanay ng mga tampok ng pag-input.
    • X_test : Ang testing set ng input features.
    • y_train : Ang hanay ng pagsasanay ng mga label ng output.
    • y_test : Ang testing set ng mga output label.

    Halimbawa : Ang sumusunod na halimbawang programa ay nai-save bilang “ test.py ”.

    mula sa sklearn.model_selection import train_test_split

    mula sa mga dataset ay nag-import ng load_dataset

    # Hakbang 1: I-load ang dataset

    dataset = load_dataset('imdb')

    X = dataset['tren']['teksto']

    y = dataset['tren']['label']

    # Hakbang 2: Hatiin ang dataset

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

    shuffle=Totoo, random_state=42)

    # Hakbang 3: I-explore ang dataset

    print('Bilang ng mga halimbawa sa orihinal na dataset:', len(X))

    print('Bilang ng mga halimbawa sa dataset ng tren:', len(X_train))

    print('Bilang ng mga halimbawa sa test dataset:', len(X_test))

    # Hakbang 4: I-access at i-print ang halimbawang data

    print('\nHalimbawa mula sa dataset ng tren:')

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

    print('\nHalimbawa mula sa test dataset:')

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

    Ang import statement na ito ay mula sa scikit-learn, hindi mula sa Hugging Face datasets library. Pakitiyak na mayroon kang scikit-learn na naka-install sa iyong kapaligiran. Maaari mong i-install ito gamit ang sumusunod na command:



    pip install scikit-learn

    Paliwanag: Una, ini-import namin ang kinakailangang module: train_test_split mula sa scikit-learn.

    • Nilo-load namin ang dataset ng IMDb gamit ang load_dataset('imdb') at itinalaga ito sa variable ng dataset.
    • Upang magamit ang train_test_split, kailangan nating paghiwalayin ang mga feature ng input (X) at ang mga kaukulang label (y). Sa kasong ito, ipinapalagay namin na ang dataset ay may split na pinangalanang 'tren' na may 'text' bilang mga feature ng pag-input at 'label' bilang mga kaukulang label. Maaaring kailanganin mong isaayos ang mga key batay sa istruktura ng iyong dataset.
    • Pagkatapos ay ipinapasa namin ang mga feature ng input (X) at mga label (y) sa train_test_split kasama ng iba pang mga parameter. Sa halimbawang ito, itinakda namin ang test_size sa 0.2 na nangangahulugang 20% ​​ng data ang ilalaan para sa pagsubok. Ang shuffle parameter ay nakatakda sa 'True' upang random na i-shuffle ang data bago hatiin, at ang random_state na parameter ay nakatakda sa 42 para sa reproducibility.
    • Ang train_test_split function ay nagbabalik ng apat na set ng data: X_train, X_test, y_train, at y_test. Kinakatawan ng mga ito ang pagsasanay at pagsubok na mga subset ng mga feature at label ng input, ayon sa pagkakabanggit.
    • Ini-print namin ang bilang ng mga halimbawa sa orihinal na dataset (len(X)), ang training dataset (len(X_train)), at ang test dataset (len(X_test)). Nagbibigay-daan ito sa amin na i-verify ang proseso ng paghahati at tiyaking tama ang pagkakagawa ng mga subset.
    • Panghuli, nag-a-access at nag-print kami ng halimbawa mula sa dataset ng pagsasanay (X_train[0], y_train[0]) at isang halimbawa mula sa test dataset (X_test[0], y_test[0]).

    Output : Pinapatakbo namin ang dating na-save na programa gamit ang Python “test.py”.

    Konklusyon

    Ang train-test split functionality na ibinibigay ng Hugging Face's datasets library, kasama ng scikit-learn's train_test_split function, ay nag-aalok ng maginhawa at mahusay na paraan upang hatiin ang isang dataset sa magkahiwalay na pagsasanay at pagsubok na mga subset.

    Sa pamamagitan ng paggamit ng train_test_split function, makokontrol mo ang laki ng test set, kung i-shuffle ang data, at magtakda ng random na seed para sa muling paggawa. Ang kakayahang umangkop na ito ay nagbibigay-daan para sa epektibong pagsusuri ng mga modelo ng machine learning sa hindi nakikitang data at mga tulong sa pag-detect ng mga isyu gaya ng overfitting o underfitting.

    Nagbibigay-daan sa iyo ang mga parameter ng train_test_split function na kontrolin ang iba't ibang aspeto ng split gaya ng laki ng test set (test_size), shuffling ang data (shuffle), at pagsasagawa ng stratified splitting batay sa mga partikular na column (stratify_by_column). Bukod pa rito, maaari kang tumukoy ng seed value (seed) para sa muling paggawa at i-customize ang mga pangalan ng cache file para sa pag-iimbak ng mga split index (train_cache_file_name at test_cache_file_name).

    Ang functionality na inaalok ng Hugging Face ay nagpapadali sa paghahanda ng iyong data para sa pagsasanay at pagsusuri ng modelo. Sa pamamagitan ng pagkakaroon ng hiwalay na pagsasanay at pagsubok na mga subset, maaari mong tumpak na masuri ang pagganap ng iyong modelo sa hindi nakikitang data, tuklasin ang mga potensyal na isyu tulad ng overfitting, at gumawa ng matalinong mga pagpapasya para sa mga pagpapahusay ng modelo.

    Sa pangkalahatan, ang functionality ng train-test split sa datasets library ng Hugging Face, kasabay ng train_test_split ng scikit-learn, ay nagbibigay ng mahusay na toolset para sa mahusay na paghahati ng data, pagsusuri ng modelo, at pagbuo ng mga mahuhusay na solusyon sa machine learning.