Partager via


DataOperationsCatalog.ShuffleRows Méthode

Définition

Mélangez les lignes de input.

public Microsoft.ML.IDataView ShuffleRows (Microsoft.ML.IDataView input, int? seed = default, int shufflePoolSize = 1000, bool shuffleSource = true);
member this.ShuffleRows : Microsoft.ML.IDataView * Nullable<int> * int * bool -> Microsoft.ML.IDataView
Public Function ShuffleRows (input As IDataView, Optional seed As Nullable(Of Integer) = Nothing, Optional shufflePoolSize As Integer = 1000, Optional shuffleSource As Boolean = true) As IDataView

Paramètres

input
IDataView

Données d'entrée.

seed
Nullable<Int32>

Valeur initiale aléatoire. S’il n’est pas spécifié, l’état aléatoire est dérivé à la MLContextplace du .

shufflePoolSize
Int32

Nombre de lignes à stocker dans le pool. La définition de cette valeur sur 1 désactive le shuffling de pool et ShuffleRows(IDataView, Nullable<Int32>, Int32, Boolean) n’effectue qu’un shuffle en lisant input dans un ordre aléatoire.

shuffleSource
Boolean

Si false, la transformation n’essaie pas de lire input dans un ordre aléatoire et utilise uniquement le regroupement pour effectuer une lecture aléatoire. Ce paramètre n’a aucun effet si la CanShuffle propriété est inputfalse.

Retours

Exemples

using System;
using System.Collections.Generic;
using Microsoft.ML;

namespace Samples.Dynamic
{
    public static class ShuffleRows
    {
        // Sample class showing how to shuffle rows in 
        // IDataView.
        public static void Example()
        {
            // Create a new context for ML.NET operations. It can be used for
            // exception tracking and logging, as a catalog of available operations
            // and as the source of randomness.
            var mlContext = new MLContext();

            // Get a small dataset as an IEnumerable.
            var enumerableOfData = GetSampleTemperatureData(5);
            var data = mlContext.Data.LoadFromEnumerable(enumerableOfData);

            // Before we apply a filter, examine all the records in the dataset.
            Console.WriteLine($"Date\tTemperature");
            foreach (var row in enumerableOfData)
            {
                Console.WriteLine($"{row.Date.ToString("d")}" +
                    $"\t{row.Temperature}");
            }
            Console.WriteLine();
            // Expected output:
            //  Date    Temperature
            //  1/2/2012        36
            //  1/3/2012        36
            //  1/4/2012        34
            //  1/5/2012        35
            //  1/6/2012        35

            // Shuffle the dataset.
            var shuffledData = mlContext.Data.ShuffleRows(data, seed: 123);

            // Look at the shuffled data and observe that the rows are in a
            // randomized order.
            var enumerable = mlContext.Data
                .CreateEnumerable<SampleTemperatureData>(shuffledData,
                reuseRowObject: true);

            Console.WriteLine($"Date\tTemperature");
            foreach (var row in enumerable)
            {
                Console.WriteLine($"{row.Date.ToString("d")}" +
                $"\t{row.Temperature}");
            }
            // Expected output:
            //  Date    Temperature
            //  1/4/2012        34
            //  1/2/2012        36
            //  1/5/2012        35
            //  1/3/2012        36
            //  1/6/2012        35
        }

        private class SampleTemperatureData
        {
            public DateTime Date { get; set; }
            public float Temperature { get; set; }
        }

        /// <summary>
        /// Get a fake temperature dataset.
        /// </summary>
        /// <param name="exampleCount">The number of examples to return.</param>
        /// <returns>An enumerable of <see cref="SampleTemperatureData"/>.</returns>
        private static IEnumerable<SampleTemperatureData> GetSampleTemperatureData(
            int exampleCount)

        {
            var rng = new Random(1234321);
            var date = new DateTime(2012, 1, 1);
            float temperature = 39.0f;

            for (int i = 0; i < exampleCount; i++)
            {
                date = date.AddDays(1);
                temperature += rng.Next(-5, 5);
                yield return new SampleTemperatureData
                {
                    Date = date,
                    Temperature =
                    temperature
                };

            }
        }
    }
}

Remarques

ShuffleRows(IDataView, Nullable<Int32>, Int32, Boolean) permet de mélanger les lignes d’une entrée IDataView à l’aide d’une approche de diffusion en continu. Pour ne pas charger l’intégralité du jeu de données en mémoire, un pool de shufflePoolSize lignes est utilisé pour sélectionner aléatoirement des lignes à générer. Le pool est construit à partir des premières shufflePoolSize lignes dans input. Les lignes seront ensuite générées de manière aléatoire à partir du pool et remplacées par la ligne suivante jusqu’à input ce que toutes les lignes aient été générées, ce qui entraîne une nouvelle IDataView taille de même taille que input mais avec les lignes dans un ordre aléatoire. Si la CanShuffle propriété est input vraie, elle sera également lue dans le pool dans un ordre aléatoire, offrant deux sources de hasard.

S’applique à