使用初始特征名称进行规范化会添加具有相同名称的第二个特征
Normalizing using inital feature name adds second feature with same name
我正在将 ml.net
用于一个小项目并尝试规范化。我可以通过两种方式进行规范化,保留原始特征列名称或定义新列(第二行代码)。
dataProcessPipelineTransformations = dataProcessPipelineTransformations.Append(mlContext.Transforms.NormalizeMinMax(featureSet.FeatureName, fixZero: false));
dataProcessPipelineTransformations = dataProcessPipelineTransformations.Append(mlContext.Transforms.NormalizeMinMax("normalizedFeature", featureSet.FeatureName, fixZero: false));
如果我使用初始特征名称,我发现 ml.net
添加了第二个具有相同名称的列。
我在问自己,为什么框架知道,两个列中的哪一个应该用于训练?它总是与规范化数据 (IsNormalized) 一起使用吗?
谢谢你清理了这个东西,我没有找到任何关于这个行为的文档。
此致
弗洛奇
如果您检查 DataViewSchema.Column,您会注意到有一个布尔标志 IsHidden
。当您将转换结果输出到具有相同名称的列时,新列的类型和值将用于下游操作。旧列已隐藏,因此无法再通过名称访问。因此,如果您需要在规范化之前访问数据,建议输出到具有不同名称的列。
我正在将 ml.net
用于一个小项目并尝试规范化。我可以通过两种方式进行规范化,保留原始特征列名称或定义新列(第二行代码)。
dataProcessPipelineTransformations = dataProcessPipelineTransformations.Append(mlContext.Transforms.NormalizeMinMax(featureSet.FeatureName, fixZero: false));
dataProcessPipelineTransformations = dataProcessPipelineTransformations.Append(mlContext.Transforms.NormalizeMinMax("normalizedFeature", featureSet.FeatureName, fixZero: false));
如果我使用初始特征名称,我发现 ml.net
添加了第二个具有相同名称的列。
我在问自己,为什么框架知道,两个列中的哪一个应该用于训练?它总是与规范化数据 (IsNormalized) 一起使用吗?
谢谢你清理了这个东西,我没有找到任何关于这个行为的文档。
此致 弗洛奇
如果您检查 DataViewSchema.Column,您会注意到有一个布尔标志 IsHidden
。当您将转换结果输出到具有相同名称的列时,新列的类型和值将用于下游操作。旧列已隐藏,因此无法再通过名称访问。因此,如果您需要在规范化之前访问数据,建议输出到具有不同名称的列。