DataOperationsCatalog.ShuffleRows Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bluffle 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.
Der zufällige Samen. Wenn nicht angegeben, wird der Zufallszustand stattdessen von der MLContext.
- shufflePoolSize
- Int32
Die Anzahl der Zeilen, die im Pool aufbewahrt werden sollen. Wenn Sie diesen Wert auf 1 festlegen, wird das Shuffling des Pools deaktiviert und ShuffleRows(IDataView, Nullable<Int32>, Int32, Boolean) nur durch Lesen input in einer zufälligen Reihenfolge eine Shuffle-Funktion ausgeführt.
- shuffleSource
- Boolean
Wenn false, versucht die Transformation nicht, in einer zufälligen Reihenfolge zu lesen input und nur Pooling zum Shuffle zu verwenden. Dieser Parameter hat keine Auswirkung, wenn die CanShuffle Eigenschaft von input ist false.
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) blenden die Zeilen aller Eingaben IDataView mithilfe eines Streamingansatzes neu aus. Um das gesamte Dataset nicht im Arbeitsspeicher zu laden, wird ein Zeilenpool shufflePoolSize verwendet, um zeilen zufällig auszuwählen, die ausgegeben werden sollen. Der Pool wird aus den ersten shufflePoolSize Zeilen in input. Zeilen werden dann zufällig aus dem Pool zurückgegeben und durch die nächste Zeile input ersetzt, bis alle Zeilen zurückgegeben wurden, was zu einer neuen IDataView Größe wie input bei den Zeilen in einer zufälligen Reihenfolge führt. Wenn die CanShuffle Eigenschaft input wahr ist, wird sie auch in den Pool in einer zufälligen Reihenfolge gelesen und bietet zwei Zufälligkeitsquellen.