ML.NET TrainTestSplit случайное семя - PullRequest
0 голосов
/ 15 ноября 2018

Я использую TrainTestSplit в ML.NET, чтобы неоднократно разбивать мой набор данных на набор для обучения и тестирования.Например, в sklearn соответствующая функция принимает начальное значение в качестве входных данных, так что возможно получить различные разбиения, но в ML.NET повторные вызовы TrainTestSplit, кажется, возвращают то же самое разделение.Можно ли изменить случайное начальное число, используемое TrainTestSplit?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

На сегодняшний день (ML.NET v1.0) это было решено.TrainTestSplit принимает seed в качестве входных данных, а также поддерживает стратификацию, устанавливая samplingKeyColumnName:

TrainTestSplit(IDataView data, double testFraction = 0.1, string samplingKeyColumnName = null, Nullable<int> seed = null);
0 голосов
/ 18 ноября 2018

Прямо сейчас TrainTestSplit не берет случайное семя.В ML.NET открыта ошибка, чтобы исправить это: 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...