我在ML.NET中使用ML.NET,反复将我的数据集分割成一个训练和测试集。例如,sklearn中,对应的函数接受一个种子作为输入,因此可以获得不同的拆分,但是在ML.NET中,对TrainTestSplit的多次调用似乎返回相同的拆分。是否有可能改变TrainTestSplit使用的随机种子?
发布于 2018-11-18 04:11:24
现在,TrainTestSplit没有随机的种子。在ML.NET中打开了一个bug来修复这个问题:https://github.com/dotnet/machinelearning/issues/1635
作为短期解决办法,我建议手动向数据视图中添加一个随机列,并将其作为stratificationColumn在TrainTestSplit中使用。
data = new GenerateNumberTransform(mlContext, new GenerateNumberTransform.Arguments
{
Column = new[] { new GenerateNumberTransform.Column { Name = "random" } },
Seed = 42 // change seed to get a different split
}, data);
(var train, var test) = mlContext.Regression.TrainTestSplit(data, stratificationColumn: "random");此代码将与ML.NET 0.7一起工作,我们将在0.8中修复种子。
发布于 2019-05-15 13:18:04
到今天(ML.NET v1.0),这个问题已经解决了。TrainTestSplit以一个seed作为输入,并通过设置samplingKeyColumnName来支持分层。
TrainTestSplit(IDataView data, double testFraction = 0.1, string samplingKeyColumnName = null, Nullable<int> seed = null);https://stackoverflow.com/questions/53320723
复制相似问题