DataOperationsCatalog.BootstrapSample 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取大致启动示例 input
。
public Microsoft.ML.IDataView BootstrapSample (Microsoft.ML.IDataView input, int? seed = default, bool complement = false);
member this.BootstrapSample : Microsoft.ML.IDataView * Nullable<int> * bool -> Microsoft.ML.IDataView
Public Function BootstrapSample (input As IDataView, Optional seed As Nullable(Of Integer) = Nothing, Optional complement As Boolean = false) As IDataView
参数
- input
- IDataView
输入数据。
- complement
- Boolean
这是否是包外示例,即转换未选择的所有行。 可以使用同一种子创建一对互补样本。
返回
示例
using System;
using Microsoft.ML;
namespace Samples.Dynamic
{
public static class BootstrapSample
{
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 rawData = new[] {
new DataPoint() { Label = true, Feature = 1.017325f},
new DataPoint() { Label = false, Feature = 0.6326591f},
new DataPoint() { Label = false, Feature = 0.0326252f},
new DataPoint() { Label = false, Feature = 0.8426974f},
new DataPoint() { Label = true, Feature = 0.9947656f},
new DataPoint() { Label = true, Feature = 1.017325f},
};
var data = mlContext.Data.LoadFromEnumerable(rawData);
// Now take a bootstrap sample of this dataset to create a new dataset.
// The bootstrap is a resampling technique that creates a training set
// of the same size by picking with replacement from the original
// dataset. With the bootstrap, we expect that the resampled dataset
// will have about 63% of the rows of the original dataset
// (i.e. 1-e^-1), with some rows represented more than once.
// BootstrapSample is a streaming implementation of the boostrap that
// enables sampling from a dataset too large to hold in memory. To
// enable streaming, BootstrapSample approximates the bootstrap by
// sampling each row according to a Poisson(1) distribution. Note that
// this streaming approximation treats each row independently, thus the
// resampled dataset is not guaranteed to be the same length as the
// input dataset. Let's take a look at the behavior of the
// BootstrapSample by examining a few draws:
for (int i = 0; i < 3; i++)
{
var resample = mlContext.Data.BootstrapSample(data, seed: i);
var enumerable = mlContext.Data
.CreateEnumerable<DataPoint>(resample, reuseRowObject: false);
Console.WriteLine($"Label\tFeature");
foreach (var row in enumerable)
{
Console.WriteLine($"{row.Label}\t{row.Feature}");
}
Console.WriteLine();
}
// Expected output:
// Label Feature
// True 1.017325
// False 0.6326591
// False 0.6326591
// False 0.6326591
// False 0.0326252
// False 0.0326252
// True 0.8426974
// True 0.8426974
// Label Feature
// True 1.017325
// True 1.017325
// False 0.6326591
// False 0.6326591
// False 0.0326252
// False 0.0326252
// False 0.0326252
// True 0.9947656
// Label Feature
// False 0.6326591
// False 0.0326252
// True 0.8426974
// True 0.8426974
// True 0.8426974
}
private class DataPoint
{
public bool Label { get; set; }
public float Feature { get; set; }
}
}
}
注解
此采样器是 引导重新采样的流版本。 使用 Poisson (1) 分布,而不是将整个数据集提取到内存中并重新采样, BootstrapSample(IDataView, Nullable<Int32>, Boolean) 而是使用 Poisson (1) 分布来选择将给定行添加到样本中的次数。 该 complement
参数允许使用相同的 seed
方式创建启动示例和补充包外样本。