Freigeben über


DataOperationsCatalog.ShuffleRows Methode

Definition

Schränken Sie die Zeilen von 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

Parameter

input
IDataView

Die Eingabedaten.

seed
Nullable<Int32>

Der zufällige Samen. Wenn nicht angegeben, wird der zufällige Zustand stattdessen aus dem MLContext.

shufflePoolSize
Int32

Die Anzahl der Zeilen, die im Pool aufbewahrt werden sollen. Wenn Sie dies auf 1 festlegen, wird die Drosselung des Pools deaktiviert und ShuffleRows(IDataView, Nullable<Int32>, Int32, Boolean) nur eine Drosselung ausgeführt, indem Sie in einer zufälligen Reihenfolge lesen input .

shuffleSource
Boolean

Wenn falsedie Transformation nicht versucht, in einer zufälligen Reihenfolge zu lesen input und nur Pooling zum Schuffen zu verwenden. Dieser Parameter hat keine Auswirkung, wenn die CanShuffle Eigenschaft inputfalseist .

Gibt zurück

Beispiele

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
                };

            }
        }
    }
}

Hinweise

ShuffleRows(IDataView, Nullable<Int32>, Int32, Boolean) wird die Zeilen aller Eingaben IDataView mit einem Streamingansatz schränken. Um das gesamte Dataset nicht im Arbeitsspeicher zu laden, wird ein Pool von shufflePoolSize Zeilen verwendet, um zufällig Zeilen auszuwählen, die ausgegeben werden sollen. Der Pool wird aus den ersten shufflePoolSize Zeilen in input. Zeilen werden dann zufällig vom Pool zurückgegeben und durch die nächste Zeile input ersetzt, bis alle Zeilen zurückgegeben wurden, die eine neue IDataViewinput größe wie die Zeilen in einer zufälligen Reihenfolge haben. Wenn die CanShuffle Eigenschaft input wahr ist, wird es auch in den Pool in einer zufälligen Reihenfolge gelesen, die zwei Zufälligkeitsquellen bietet.

Gilt für: