ML.NET Преобразование данных без подгонки - PullRequest
0 голосов
/ 10 июля 2019

Введение

Привет, я хочу выполнить некоторые действия по подготовке данных и поместить DataView в другой метод или использовать его в нескольких местах.

Итак, я создал IEstimator<ITransformer> объект для хранения конвейера, например:

var textEstimator = mlContext.Transforms.Text.NormalizeText("Description")
    .Append(mlContext.Transforms.Text.TokenizeIntoWords("Description"))
    .Append(mlContext.Transforms.Text.RemoveDefaultStopWords("Description"))
    .Append(mlContext.Transforms.Conversion.MapValueToKey("Description"))
    .Append(mlContext.Transforms.Text.ProduceNgrams("Description"))
    .Append(mlContext.Transforms.NormalizeLpNorm("Description"));

(скопировано с docs.microsoft )

Но теперь я хочу получить DataView, и помните, это , а не обучающий конвейер.


Вопрос

Так почему я должен Fit конвейер до Tranform?

// Fit data to estimator
// Fitting generates a transformer that applies the operations of defined by estimator
ITransformer textTransformer = textEstimator.Fit(data);

// Transform data
IDataView transformedData = textTransformer.Transform(data);

1 Ответ

1 голос
/ 17 июля 2019

Calling Fit строит цепочку трансформаторов из цепочки оценщиков, которые вы устанавливаете, используя удобные методы в MLContext. Трансформаторы выполняют реальную работу по преобразованию ваших данных.

Вы правы в том, что большинство ваших Оценщиков мало что делают, кроме того, что возвращают соответствующий им Трансформатор, но когда в какой-то момент превращение этого в обучающий конвейер, подобная структура принесет вам большую пользу.

...