Hugging Face Train et ensemble de données divisé

Hugging Face Train Et Ensemble De Donnees Divise



La bibliothèque Hugging Face n'a pas de fonction spécifique nommée train_test_split. Cependant, lorsqu'il s'agit de diviser les données pour la formation et les tests dans des tâches d'apprentissage automatique, la fonction train_test_split est couramment utilisée dans d'autres bibliothèques populaires telles que scikit-learn. Ici, nous expliquerons les paramètres généralement utilisés dans la fonction train_test_split de scikit-learn.

La méthode train_test_split de la bibliothèque d'ensembles de données de Hugging Face est utilisée pour diviser un ensemble de données en deux sous-ensembles : un sous-ensemble d'entraînement et un sous-ensemble de test. Cette méthode est couramment utilisée en apprentissage automatique pour évaluer les performances d'un modèle sur des données invisibles. Le sous-ensemble de formation est utilisé pour entraîner le modèle, tandis que le sous-ensemble de test est utilisé pour évaluer ses performances et ses capacités de généralisation.







Voici un aperçu de la méthode train_test_split dans Hugging Face :



  1. test_size (numpy.random.Generator, facultatif) : La taille de la division de test est déterminée par cette option. Le type peut être flottant ou entier.
  • S'il est donné sous forme de flottant, il doit refléter le pourcentage de l'ensemble de données à inclure dans la répartition de test et être compris entre 0,0 et 1,0.
  • Le nombre exact d’échantillons de test est représenté par la valeur si elle est fournie sous forme d’entier.
  • S'il est défini sur Aucun, le complément de la taille du train est utilisé comme valeur.
  • Si train_size est également None, il sera défini sur 0,25 (25 % de l'ensemble de données).
  • train_size (numpy.random.Generator, facultatif) : La taille de la répartition du train est déterminée par ce paramètre. Il suit les mêmes directives que test_size.
    • S'il est donné sous forme de flottant, il doit refléter le pourcentage de l'ensemble de données à inclure dans la répartition du train et être compris entre 0,0 et 1,0.
    • Le nombre exact d’échantillons de train est représenté par la valeur si elle est fournie sous forme d’entier.
    • S’il est défini sur Aucun, la valeur est automatiquement remplacée par le complément de la taille du test.
  • shuffle (bool, facultatif, par défaut True)
    • Ce paramètre détermine s'il faut ou non mélanger les données avant de les diviser.
    • S'il est défini sur True, les données seront mélangées de manière aléatoire avant la division.
    • S'il est défini sur False, les données seront divisées sans brassage.
  • stratify_by_column (str, facultatif, par défaut : Aucun)
    • Ce paramètre est utilisé pour le fractionnement stratifié des données en fonction d'une colonne spécifique.
    • S'il est spécifié, il doit s'agir du nom de colonne des étiquettes ou des classes.
    • Les données seront divisées de manière à conserver la même répartition des étiquettes ou des classes dans les répartitions de train et de test.
  • graine (int, facultatif)
    • Ce paramètre vous permet de définir une graine pour initialiser le BitGenerator par défaut.
    • S'il est défini sur Aucun, une nouvelle entropie imprévisible sera extraite du système d'exploitation.
    • Si un entier ou des entiers de type tableau sont transmis, ils seront utilisés pour dériver l'état initial de BitGenerator.
  • générateur (numpy.random.Generator, facultatif)
    • Ce paramètre vous permet de spécifier un générateur aléatoire NumPy pour calculer la permutation des lignes de l'ensemble de données.
    • S'il est défini sur Aucun (par défaut), il utilise np.random.default_rng qui est le BitGenerator par défaut (PCG64) de NumPy.
  • keep_in_memory (bool, valeur par défaut False)
    • Ce paramètre détermine s'il faut conserver les index fractionnés en mémoire au lieu de les écrire dans un fichier cache.
    • S'il est défini sur True, les indices de fractionnement seront stockés dans la mémoire pendant le processus de fractionnement.
    • S'il est défini sur False, les index fractionnés seront écrits dans un fichier cache pour une utilisation ultérieure.
  • load_from_cache_file (Facultatif[bool], la valeur par défaut est True si la mise en cache est activée)
    • Ce paramètre détermine s'il faut utiliser un fichier cache pour charger les index fractionnés au lieu de les recalculer.
    • S'il est défini sur True et qu'un fichier cache stockant les index fractionnés peut être identifié, il sera utilisé.
    • S'il est défini sur False, les indices fractionnés seront recalculés même si un fichier cache existe.
    • La valeur par défaut est True si la mise en cache est activée.
  • train_cache_file_name (str, facultatif)
    • Ce paramètre vous permet de fournir un chemin ou un nom spécifique pour le fichier cache qui stocke les index de répartition du train.
    • Si cela est spécifié, les indices de répartition du train seront stockés dans ce fichier cache au lieu du nom du fichier cache généré automatiquement.
  • test_cache_file_name (str, facultatif)
    • Ce paramètre vous permet de fournir un chemin ou un nom spécifique pour le fichier cache qui stocke les index de fractionnement de test.
    • Si cela est spécifié, les indices de fractionnement de test seront stockés dans ce fichier cache au lieu du nom du fichier cache généré automatiquement.
  • writer_batch_size (int, par défaut 1000)
    • Ce paramètre détermine le nombre de lignes par opération d'écriture pour l'enregistreur de fichier cache.
    • Il s'agit d'un compromis entre l'utilisation de la mémoire et la vitesse de traitement.
    • Des valeurs plus élevées réduisent le nombre d'opérations d'écriture mais consomment plus de mémoire pendant le traitement.
    • Les valeurs inférieures consomment moins de mémoire temporaire mais peuvent légèrement affecter la vitesse de traitement.
  • train_new_fingerprint (str, facultatif, par défaut : Aucun)
    • Ce paramètre représente la nouvelle empreinte digitale de la rame après application d'une transformation.
    • S'il est précisé, il fournit une nouvelle empreinte digitale pour la rame.
    • S'il est défini sur Aucun, la nouvelle empreinte digitale est calculée à l'aide d'un hachage de l'empreinte digitale précédente et des arguments de transformation.
  • test_new_fingerprint (str, facultatif, par défaut : Aucun)
    • Ce paramètre représente la nouvelle empreinte digitale de l'ensemble de test après application d'une transformation.
    • S'il est spécifié, il fournit une nouvelle empreinte digitale pour l'ensemble de test.
    • S'il est défini sur Aucun, la nouvelle empreinte digitale est calculée à l'aide d'un hachage de l'empreinte digitale précédente et des arguments de transformation.

    Syntaxe:

    depuis sklearn.model_selection importer train_test_split

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

    X : Cela représente les entités d'entrée ou les variables indépendantes de votre ensemble de données.



    • et : Cela représente la sortie ou la variable dépendante que vous essayez de prédire.
    • taille_test : Ce paramètre détermine la proportion de l'ensemble de données qui sera allouée aux tests. Il peut être spécifié sous forme de nombre flottant (par exemple, 0,2 pour 20 %) ou d'entier (par exemple, 200 pour 200 échantillons).
    • état_aléatoire : Il s'agit d'un paramètre facultatif qui vous permet de définir une graine pour le générateur de nombres aléatoires. Cela garantit que la division est reproductible, ce qui signifie que vous obtiendrez la même division si vous utilisez la même valeur d'état aléatoire.

    La fonction train_test_split renvoie quatre ensembles de données :





    • X_train : L'ensemble de formation des fonctionnalités d'entrée.
    • X_test : L'ensemble de test des fonctionnalités d'entrée.
    • y_train : L’ensemble de formation des étiquettes de sortie.
    • y_test : L'ensemble de test des étiquettes de sortie.

    Exemple : L'exemple de programme suivant est enregistré sous le nom « test.py ».

    depuis sklearn.model_selection importer train_test_split

    à partir des ensembles de données importer load_dataset

    # Étape 1 : Charger l'ensemble de données

    ensemble de données = load_dataset('imdb')

    X = ensemble de données['train']['text']

    y = ensemble de données['train']['label']

    # Étape 2 : Diviser l'ensemble de données

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

    shuffle=Vrai, random_state=42)

    # Étape 3 : Explorer l'ensemble de données

    print('Nombre d'exemples dans l'ensemble de données d'origine :', len(X))

    print('Nombre d'exemples dans l'ensemble de données du train :', len(X_train))

    print('Nombre d'exemples dans l'ensemble de données de test :', len(X_test))

    # Étape 4 : Accéder et imprimer des exemples de données

    print('\nExemple tiré de l'ensemble de données du train :')

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

    print('\nExemple de l'ensemble de données de test :')

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

    Cette instruction d'importation provient de scikit-learn, et non de la bibliothèque d'ensembles de données Hugging Face. Veuillez vous assurer que scikit-learn est installé dans votre environnement. Vous pouvez l'installer à l'aide de la commande suivante :



    pip installer scikit-learn

    Explication : Tout d'abord, nous importons le module nécessaire : train_test_split depuis scikit-learn.

    • Nous chargeons l'ensemble de données IMDb à l'aide de load_dataset('imdb') et l'attribuons à la variable de l'ensemble de données.
    • Pour utiliser train_test_split, nous devons séparer les fonctionnalités d'entrée (X) et les étiquettes correspondantes (y). Dans ce cas, nous supposons que l'ensemble de données a une division nommée « train » avec « texte » comme entités d'entrée et « label » comme étiquettes correspondantes. Vous devrez peut-être ajuster les clés en fonction de la structure de votre ensemble de données.
    • Nous transmettons ensuite les caractéristiques d'entrée (X) et les étiquettes (y) au train_test_split avec d'autres paramètres. Dans cet exemple, nous définissons test_size sur 0,2, ce qui signifie que 20 % des données seront allouées aux tests. Le paramètre shuffle est défini sur « True » pour mélanger aléatoirement les données avant de les diviser, et le paramètre random_state est défini sur 42 pour la reproductibilité.
    • La fonction train_test_split renvoie quatre ensembles de données : X_train, X_test, y_train et y_test. Ceux-ci représentent respectivement les sous-ensembles de formation et de test des fonctionnalités d’entrée et des étiquettes.
    • Nous imprimons le nombre d'exemples dans l'ensemble de données d'origine (len(X)), l'ensemble de données d'entraînement (len(X_train)) et l'ensemble de données de test (len(X_test)). Cela nous permet de vérifier le processus de fractionnement et de garantir que les sous-ensembles sont créés correctement.
    • Enfin, nous accédons et imprimons un exemple de l'ensemble de données de formation (X_train[0], y_train[0]) et un exemple de l'ensemble de données de test (X_test[0], y_test[0]).

    Sortir : Nous exécutons le programme précédemment enregistré en utilisant le Python « test.py ».

    Conclusion

    La fonctionnalité de fractionnement train-test fournie par la bibliothèque d'ensembles de données de Hugging Face, en combinaison avec la fonction train_test_split de scikit-learn, offre un moyen pratique et efficace de diviser un ensemble de données en sous-ensembles d'entraînement et de test distincts.

    En utilisant la fonction train_test_split, vous pouvez contrôler la taille de l'ensemble de test, savoir s'il faut mélanger les données et définir une graine aléatoire pour la reproductibilité. Cette flexibilité permet une évaluation efficace des modèles d'apprentissage automatique sur des données invisibles et aide à détecter les problèmes tels que le surajustement ou le sous-apprentissage.

    Les paramètres de la fonction train_test_split vous permettent de contrôler divers aspects de la répartition tels que la taille de l'ensemble de test (test_size), le brassage des données (shuffle) et l'exécution d'un fractionnement stratifié basé sur des colonnes spécifiques (stratify_by_column). De plus, vous pouvez spécifier une valeur de départ (seed) pour la reproductibilité et personnaliser les noms de fichiers de cache pour stocker les index fractionnés (train_cache_file_name et test_cache_file_name).

    La fonctionnalité offerte par Hugging Face facilite la préparation de vos données pour la formation et l'évaluation du modèle. En disposant de sous-ensembles de formation et de tests distincts, vous pouvez évaluer avec précision les performances de votre modèle sur des données invisibles, détecter des problèmes potentiels tels que le surajustement et prendre des décisions éclairées pour améliorer le modèle.

    Dans l'ensemble, la fonctionnalité de fractionnement train-test de la bibliothèque d'ensembles de données de Hugging Face, en conjonction avec train_test_split de scikit-learn, fournit un ensemble d'outils puissants pour un fractionnement efficace des données, une évaluation de modèles et le développement de solutions d'apprentissage automatique robustes.