Hugging Face Train και Split Dataset

Hugging Face Train Kai Split Dataset



Η βιβλιοθήκη Hugging Face δεν έχει μια συγκεκριμένη συνάρτηση με το όνομα train_test_split. Ωστόσο, όταν πρόκειται για τον διαχωρισμό των δεδομένων για εκπαίδευση και δοκιμή σε εργασίες μηχανικής μάθησης, η συνάρτηση train_test_split χρησιμοποιείται συνήθως σε άλλες δημοφιλείς βιβλιοθήκες, όπως η scikit-learn. Εδώ, θα εξηγήσουμε τις παραμέτρους που χρησιμοποιούνται συνήθως στη συνάρτηση train_test_split από το scikit-learn.

Η μέθοδος train_test_split στη βιβλιοθήκη δεδομένων του Hugging Face χρησιμοποιείται για τη διαίρεση ενός συνόλου δεδομένων σε δύο υποσύνολα: ένα υποσύνολο εκπαίδευσης και ένα υποσύνολο δοκιμής. Αυτή η μέθοδος χρησιμοποιείται συνήθως στη μηχανική μάθηση για την αξιολόγηση της απόδοσης ενός μοντέλου σε αόρατα δεδομένα. Το υποσύνολο εκπαίδευσης χρησιμοποιείται για την εκπαίδευση του μοντέλου, ενώ το υποσύνολο δοκιμής χρησιμοποιείται για την αξιολόγηση της απόδοσης και των δυνατοτήτων γενίκευσής του.







Ακολουθεί μια επισκόπηση της μεθόδου train_test_split στο Hugging Face:



  1. test_size (numpy.random.Generator, προαιρετικό) : Το μέγεθος του διαχωρισμού δοκιμής καθορίζεται από αυτήν την επιλογή. Ο τύπος μπορεί να είναι είτε float είτε ακέραιος.
  • Εάν δίνεται ως float, θα πρέπει να αντικατοπτρίζει το ποσοστό του συνόλου δεδομένων που θα συμπεριληφθεί στη δοκιμαστική διαίρεση και να είναι μεταξύ 0,0 και 1,0.
  • Ο ακριβής αριθμός των δειγμάτων δοκιμής αντιπροσωπεύεται από την τιμή εάν παρέχεται ως ακέραιος αριθμός.
  • Εάν έχει οριστεί σε Κανένα, το συμπλήρωμα του μεγέθους της αμαξοστοιχίας χρησιμοποιείται ως τιμή.
  • Εάν το τρένο_μέγεθος είναι επίσης Κανένα, θα οριστεί σε 0,25 (25% του συνόλου δεδομένων).
  • train_size (numpy.random.Generator, προαιρετικό): Το μέγεθος του διαχωρισμού της αμαξοστοιχίας καθορίζεται από αυτήν την παράμετρο. Ακολουθεί τις ίδιες οδηγίες με το test_size.
    • Εάν δίνεται ως float, θα πρέπει να αντικατοπτρίζει το ποσοστό του συνόλου δεδομένων που πρέπει να συμπεριληφθεί στη διαίρεση της αμαξοστοιχίας και να είναι μεταξύ 0,0 και 1,0.
    • Ο ακριβής αριθμός δειγμάτων αμαξοστοιχίας αντιπροσωπεύεται από την τιμή εάν παρέχεται ως ακέραιος αριθμός.
    • Εάν έχει οριστεί σε Κανένα, η τιμή αλλάζει αυτόματα στο συμπλήρωμα του μεγέθους δοκιμής.
  • ανακάτεμα (bool, προαιρετικό, προεπιλογή σε True)
    • Αυτή η παράμετρος καθορίζει εάν θα γίνει τυχαία αναπαραγωγή ή όχι των δεδομένων πριν από τη διαίρεση.
    • Εάν οριστεί σε True, τα δεδομένα θα ανακατευτούν τυχαία πριν από τον διαχωρισμό.
    • Εάν έχει οριστεί σε False, τα δεδομένα θα διαχωριστούν χωρίς τυχαία αναπαραγωγή.
  • stratify_by_column (str, προαιρετικό, προεπιλογή σε None)
    • Αυτή η παράμετρος χρησιμοποιείται για τη στρωματοποιημένη διαίρεση δεδομένων με βάση μια συγκεκριμένη στήλη.
    • Εάν καθορίζεται, θα πρέπει να είναι το όνομα της στήλης των ετικετών ή των κλάσεων.
    • Τα δεδομένα θα διαιρεθούν με τρόπο που να διατηρεί την ίδια κατανομή ετικετών ή τάξεων στις διαιρέσεις αμαξοστοιχιών και δοκιμών.
  • σπόρος (εντός, προαιρετικός)
    • Αυτή η παράμετρος σάς επιτρέπει να ορίσετε ένα seed για την προετοιμασία του προεπιλεγμένου BitGenerator.
    • Εάν έχει οριστεί σε Κανένα, μια νέα, απρόβλεπτη εντροπία θα τραβηχτεί από το λειτουργικό σύστημα.
    • Εάν μεταβιβαστεί ένας ακέραιος ή ακέραιοι που μοιάζουν με πίνακα, θα χρησιμοποιηθούν για την εξαγωγή της αρχικής κατάστασης BitGenerator.
  • γεννήτρια (numpy.random.Generator, προαιρετικό)
    • Αυτή η παράμετρος σάς επιτρέπει να καθορίσετε μια τυχαία γεννήτρια NumPy για τον υπολογισμό της μετάθεσης των σειρών δεδομένων.
    • Εάν έχει οριστεί σε None (προεπιλογή), χρησιμοποιεί το np.random.default_rng που είναι το προεπιλεγμένο BitGenerator (PCG64) του NumPy.
  • keep_in_memory (bool, προεπιλογή σε False)
    • Αυτή η παράμετρος καθορίζει εάν θα διατηρηθούν οι διαχωρισμένοι δείκτες στη μνήμη αντί να τους εγγραφούν σε ένα αρχείο προσωρινής μνήμης.
    • Εάν έχει οριστεί σε True, οι δείκτες διαχωρισμού θα αποθηκευτούν στη μνήμη κατά τη διαδικασία διαχωρισμού.
    • Εάν οριστεί σε False, οι διαχωρισμένοι δείκτες θα εγγραφούν σε ένα αρχείο προσωρινής μνήμης για μελλοντική χρήση.
  • load_from_cache_file (Προαιρετικό[bool], ορίζεται από προεπιλογή True εάν είναι ενεργοποιημένη η προσωρινή αποθήκευση)
    • Αυτή η παράμετρος καθορίζει εάν θα χρησιμοποιηθεί ένα αρχείο προσωρινής μνήμης για τη φόρτωση των δεικτών διαχωρισμού αντί για τον επανυπολογισμό τους.
    • Εάν οριστεί σε True και μπορεί να αναγνωριστεί ένα αρχείο προσωρινής μνήμης που αποθηκεύει τους διαχωρισμένους δείκτες, θα χρησιμοποιηθεί.
    • Εάν οριστεί σε False, οι δείκτες διαχωρισμού θα επανυπολογιστούν ακόμη και αν υπάρχει ένα αρχείο κρυφής μνήμης.
    • Η προεπιλεγμένη τιμή είναι True εάν είναι ενεργοποιημένη η προσωρινή αποθήκευση.
  • train_cache_file_name (str, προαιρετικό)
    • Αυτή η παράμετρος σάς επιτρέπει να παρέχετε μια συγκεκριμένη διαδρομή ή όνομα για το αρχείο κρυφής μνήμης που αποθηκεύει τους δείκτες διαχωρισμού αμαξοστοιχίας.
    • Εάν έχει καθοριστεί, οι δείκτες διαχωρισμού τρένου θα αποθηκευτούν σε αυτό το αρχείο κρυφής μνήμης αντί για το όνομα του αρχείου προσωρινής μνήμης που δημιουργείται αυτόματα.
  • test_cache_file_name (str, προαιρετικό)
    • Αυτή η παράμετρος σάς επιτρέπει να παρέχετε μια συγκεκριμένη διαδρομή ή όνομα για το αρχείο προσωρινής μνήμης που αποθηκεύει τους δοκιμαστικούς δείκτες διαχωρισμού.
    • Εάν έχει καθοριστεί, οι δοκιμαστικοί δείκτες διαχωρισμού θα αποθηκευτούν σε αυτό το αρχείο κρυφής μνήμης αντί για το όνομα του αρχείου προσωρινής μνήμης που δημιουργείται αυτόματα.
  • writer_batch_size (int, προεπιλογή σε 1000)
    • Αυτή η παράμετρος καθορίζει τον αριθμό των γραμμών ανά λειτουργία εγγραφής για το πρόγραμμα εγγραφής αρχείου προσωρινής μνήμης.
    • Είναι μια αντιστάθμιση μεταξύ της χρήσης μνήμης και της ταχύτητας επεξεργασίας.
    • Οι υψηλότερες τιμές μειώνουν τον αριθμό των λειτουργιών εγγραφής, αλλά καταναλώνουν περισσότερη μνήμη κατά την επεξεργασία.
    • Οι χαμηλότερες τιμές καταναλώνουν λιγότερη προσωρινή μνήμη, αλλά ενδέχεται να επηρεάσουν ελαφρώς την ταχύτητα επεξεργασίας.
  • train_new_fingerprint (str, προαιρετικό, προεπιλογή σε None)
    • Αυτή η παράμετρος αντιπροσωπεύει το νέο δακτυλικό αποτύπωμα του συνόλου του τρένου μετά την εφαρμογή ενός μετασχηματισμού.
    • Εάν καθορίζεται, παρέχει ένα νέο δακτυλικό αποτύπωμα για το σετ τρένου.
    • Εάν έχει οριστεί σε Κανένα, το νέο δακτυλικό αποτύπωμα υπολογίζεται χρησιμοποιώντας έναν κατακερματισμό του προηγούμενου δακτυλικού αποτυπώματος και τα ορίσματα μετασχηματισμού.
  • test_new_fingerprint (str, προαιρετικό, προεπιλογή σε None)
    • Αυτή η παράμετρος αντιπροσωπεύει το νέο δακτυλικό αποτύπωμα του συνόλου δοκιμής μετά την εφαρμογή ενός μετασχηματισμού.
    • Εάν καθορίζεται, παρέχει ένα νέο δακτυλικό αποτύπωμα για το σετ δοκιμής.
    • Εάν έχει οριστεί σε Κανένα, το νέο δακτυλικό αποτύπωμα υπολογίζεται χρησιμοποιώντας έναν κατακερματισμό του προηγούμενου δακτυλικού αποτυπώματος και τα ορίσματα μετασχηματισμού.

    Σύνταξη:

    από το sklearn.model_selection εισαγωγή train_test_split

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

    Χ : Αυτό αντιπροσωπεύει τα χαρακτηριστικά εισόδου ή τις ανεξάρτητες μεταβλητές του συνόλου δεδομένων σας.



    • και : Αντιπροσωπεύει την έξοδο ή την εξαρτημένη μεταβλητή που προσπαθείτε να προβλέψετε.
    • test_size : Αυτή η παράμετρος καθορίζει την αναλογία του συνόλου δεδομένων που θα εκχωρηθεί για δοκιμή. Μπορεί να οριστεί ως float (π.χ. 0,2 για 20%) ή ακέραιος (π.χ. 200 για 200 δείγματα).
    • τυχαία_κατάσταση : Αυτή είναι μια προαιρετική παράμετρος που σας επιτρέπει να ορίσετε έναν σπόρο για τη γεννήτρια τυχαίων αριθμών. Εξασφαλίζει ότι η διαίρεση είναι αναπαραγώγιμη, πράγμα που σημαίνει ότι θα αποκτήσετε τον ίδιο διαχωρισμό εάν χρησιμοποιήσετε την ίδια τιμή τυχαίας κατάστασης.

    Η συνάρτηση train_test_split επιστρέφει τέσσερα σύνολα δεδομένων:





    • X_train : Το εκπαιδευτικό σύνολο χαρακτηριστικών εισόδου.
    • X_test : Το σύνολο δοκιμών των χαρακτηριστικών εισόδου.
    • y_train : Το εκπαιδευτικό σετ ετικετών εξόδου.
    • y_test : Το σετ δοκιμών ετικετών εξόδου.

    Παράδειγμα : Το ακόλουθο παράδειγμα προγράμματος αποθηκεύεται ως ' test.py '.

    από το sklearn.model_selection εισαγωγή train_test_split

    από σύνολα δεδομένων εισαγωγής load_dataset

    # Βήμα 1: Φορτώστε το σύνολο δεδομένων

    σύνολο δεδομένων = load_dataset('imdb')

    X = σύνολο δεδομένων ['train']['text']

    y = σύνολο δεδομένων ['train']['label']

    # Βήμα 2: Διαχωρίστε το σύνολο δεδομένων

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

    shuffle=True, random_state=42)

    # Βήμα 3: Εξερευνήστε το σύνολο δεδομένων

    print('Αριθμός παραδειγμάτων στο αρχικό σύνολο δεδομένων:', len(X))

    print('Αριθμός παραδειγμάτων στο σύνολο δεδομένων τρένου:', len(X_train))

    print('Αριθμός παραδειγμάτων στο σύνολο δεδομένων δοκιμής:', len(X_test))

    # Βήμα 4: Πρόσβαση και εκτύπωση δεδομένων παραδειγμάτων

    print('\nΠαράδειγμα από το σύνολο δεδομένων τρένου:')

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

    print('\nΠαράδειγμα από το δοκιμαστικό σύνολο δεδομένων:')

    εκτύπωση (X_test[0], y_test[0])

    Αυτή η δήλωση εισαγωγής προέρχεται από το scikit-learn και όχι από τη βιβλιοθήκη συνόλων δεδομένων Hugging Face. Βεβαιωθείτε ότι έχετε εγκαταστήσει το scikit-learn στο περιβάλλον σας. Μπορείτε να το εγκαταστήσετε χρησιμοποιώντας την ακόλουθη εντολή:



    pip install scikit-learn

    Επεξήγηση: Αρχικά, εισάγουμε την απαραίτητη ενότητα: train_test_split από το scikit-learn.

    • Φορτώνουμε το σύνολο δεδομένων IMDb χρησιμοποιώντας το load_dataset('imdb') και το εκχωρούμε στη μεταβλητή δεδομένων.
    • Για να χρησιμοποιήσουμε το train_test_split, πρέπει να διαχωρίσουμε τα χαρακτηριστικά εισόδου (X) και τις αντίστοιχες ετικέτες (y). Σε αυτήν την περίπτωση, υποθέτουμε ότι το σύνολο δεδομένων έχει ένα διαχωρισμό με το όνομα 'train' με το 'text' ως χαρακτηριστικά εισόδου και το 'label' ως τις αντίστοιχες ετικέτες. Ίσως χρειαστεί να προσαρμόσετε τα κλειδιά με βάση τη δομή του συνόλου δεδομένων σας.
    • Στη συνέχεια περνάμε τα χαρακτηριστικά εισόδου (X) και τις ετικέτες (y) στο train_test_split μαζί με άλλες παραμέτρους. Σε αυτό το παράδειγμα, ορίσαμε το test_size σε 0,2 που σημαίνει ότι το 20% των δεδομένων θα διατεθεί για δοκιμή. Η παράμετρος shuffle έχει οριστεί σε 'True' για τυχαία τυχαία αναπαραγωγή των δεδομένων πριν από τον διαχωρισμό και η παράμετρος random_state ορίζεται στο 42 για αναπαραγωγιμότητα.
    • Η συνάρτηση train_test_split επιστρέφει τέσσερα σύνολα δεδομένων: X_train, X_test, y_train και y_test. Αυτά αντιπροσωπεύουν τα υποσύνολα εκπαίδευσης και δοκιμής των χαρακτηριστικών εισόδου και των ετικετών, αντίστοιχα.
    • Εκτυπώνουμε τον αριθμό των παραδειγμάτων στο αρχικό σύνολο δεδομένων (len(X)), το σύνολο δεδομένων εκπαίδευσης (len(X_train)) και το σύνολο δεδομένων δοκιμής (len(X_test)). Αυτό μας επιτρέπει να επαληθεύσουμε τη διαδικασία διαχωρισμού και να διασφαλίσουμε ότι τα υποσύνολα έχουν δημιουργηθεί σωστά.
    • Τέλος, έχουμε πρόσβαση και εκτυπώνουμε ένα παράδειγμα από το σύνολο δεδομένων εκπαίδευσης (X_train[0], y_train[0]) και ένα παράδειγμα από το σύνολο δεδομένων δοκιμής (X_test[0], y_test[0]).

    Παραγωγή : Εκτελούμε το προηγουμένως αποθηκευμένο πρόγραμμα χρησιμοποιώντας το Python 'test.py'.

    συμπέρασμα

    Η λειτουργία διαχωρισμού τρένου δοκιμής που παρέχεται από τη βιβλιοθήκη συνόλων δεδομένων του Hugging Face, σε συνδυασμό με τη συνάρτηση train_test_split του scikit-learn, προσφέρει έναν βολικό και αποτελεσματικό τρόπο για τη διαίρεση ενός συνόλου δεδομένων σε ξεχωριστά υποσύνολα εκπαίδευσης και δοκιμής.

    Χρησιμοποιώντας τη συνάρτηση train_test_split, μπορείτε να ελέγξετε το μέγεθος του συνόλου δοκιμής, εάν θα ανακατέψετε τα δεδομένα και να ορίσετε έναν τυχαίο σπόρο για αναπαραγωγιμότητα. Αυτή η ευελιξία επιτρέπει την αποτελεσματική αξιολόγηση των μοντέλων μηχανικής εκμάθησης σε μη ορατά δεδομένα και βοηθά στον εντοπισμό ζητημάτων όπως η υπερπροσαρμογή ή η κακή προσαρμογή.

    Οι παράμετροι της συνάρτησης train_test_split σάς επιτρέπουν να ελέγχετε διάφορες πτυχές του διαχωρισμού, όπως το μέγεθος του συνόλου δοκιμής (test_size), την τυχαία αναπαραγωγή των δεδομένων (shuffle) και την εκτέλεση ενός στρωματοποιημένου διαχωρισμού με βάση συγκεκριμένες στήλες (stratify_by_column). Επιπλέον, μπορείτε να καθορίσετε μια τιμή σποράς (seed) για αναπαραγωγιμότητα και να προσαρμόσετε τα ονόματα των αρχείων προσωρινής αποθήκευσης για την αποθήκευση των διαχωρισμένων δεικτών (train_cache_file_name και test_cache_file_name).

    Η λειτουργικότητα που προσφέρει το Hugging Face διευκολύνει την προετοιμασία των δεδομένων σας για εκπαίδευση και αξιολόγηση μοντέλων. Διαθέτοντας ξεχωριστά υποσύνολα εκπαίδευσης και δοκιμών, μπορείτε να αξιολογήσετε με ακρίβεια την απόδοση του μοντέλου σας σε μη ορατά δεδομένα, να εντοπίσετε πιθανά ζητήματα όπως η υπερβολική προσαρμογή και να λάβετε τεκμηριωμένες αποφάσεις για βελτιώσεις του μοντέλου.

    Συνολικά, η λειτουργία διαίρεσης δοκιμής τρένου στη βιβλιοθήκη συνόλων δεδομένων του Hugging Face, σε συνδυασμό με το train_test_split του scikit-learn, παρέχει ένα ισχυρό σύνολο εργαλείων για αποτελεσματικό διαχωρισμό δεδομένων, αξιολόγηση μοντέλων και ανάπτυξη ισχυρών λύσεων μηχανικής εκμάθησης.