ML.NET 在不拟合的情况下转换数据
ML.NET Transform data without fitting
简介
嗨,我想做一些数据准备操作,然后将 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
,请记住,这 还不是 学习管道。
问题
那么为什么我必须在 Tranform
之前 Fit
管道?
// 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);
调用 Fit 会根据您使用 MLContext 上的便捷方法设置的估计器链构建变换器链。转换器执行转换数据的实际工作。
你是对的,你的大多数 Estimator 除了返回它们相应的 Transformer 之外几乎没有做任何工作,但是当在某个时候将其转变为学习管道时,类似的结构将使你受益匪浅。
简介
嗨,我想做一些数据准备操作,然后将 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
,请记住,这 还不是 学习管道。
问题
那么为什么我必须在 Tranform
之前 Fit
管道?
// 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);
调用 Fit 会根据您使用 MLContext 上的便捷方法设置的估计器链构建变换器链。转换器执行转换数据的实际工作。
你是对的,你的大多数 Estimator 除了返回它们相应的 Transformer 之外几乎没有做任何工作,但是当在某个时候将其转变为学习管道时,类似的结构将使你受益匪浅。