ML.NET 跳过数据集中的列
ML.NET skipping columns from datasets
我有一个问题。正如我们所知,ML.NET 是一个很棒的 .NET 框架,它通过 "yourself" 做了很多事情,所以有时很难深入内部。
我有包含 30 个不同特征的数据集。我怕过拟合,所以我在寻找最简单的方法来删除不需要的。
例如,如果我想跳过第一列,我的 Data.CS
可以这样吗?:
//skipped Column 0
[Column(ordinal: "1")]
public float RadiusMean;
[Column(ordinal: "2")]
public float TextureMean;
[Column(ordinal: "3")]
public float PerimeterMean;
我注意到,我们可以通过从特征中删除列来做到这一点;
pipeline.Add(new ColumnConcatenator(outputColumn: "Features",
"TextureMean",
"PerimeterMean",
"AreaMean",
//delete not necessery columns
由此,我们可以改进我们的结果。但是,如果它像训练模型的 "deleting" 列一样工作?
第二个问题,有没有更快的制作柱子的方法?或者 ML.NET 中可能有从数据集中获取列的方法?
第一个问题:从Data.cs
中的输入class中删除列意味着TextLoader
将在读入时跳过该列文件。如果您根本不想使用它,这可能是最好的选择。
如果您不在 "Features" 列中包含该列,它将不会包含在训练中。学习者默认查看 "Features" 和 "Label" 列,因此不会使用其他列。但是,您仍然在支付阅读专栏的费用。如果您想将该列用于特征工程而不是训练,这可能很有用。
第二个问题:可以读入多列,如图here。这会将 784 个数字特征读入一列。
新的 API 将使许多专栏中的内容更易于阅读,如图 here 所示。这会将 10 列读入一个 "features" 向量列。
使用新的 API,模型自省将变得更加容易,这样您就可以了解哪些功能很重要,从而帮助您决定要包含哪些功能。
注意:我在 ML.NET 团队。
我有一个问题。正如我们所知,ML.NET 是一个很棒的 .NET 框架,它通过 "yourself" 做了很多事情,所以有时很难深入内部。
我有包含 30 个不同特征的数据集。我怕过拟合,所以我在寻找最简单的方法来删除不需要的。
例如,如果我想跳过第一列,我的 Data.CS
可以这样吗?:
//skipped Column 0
[Column(ordinal: "1")]
public float RadiusMean;
[Column(ordinal: "2")]
public float TextureMean;
[Column(ordinal: "3")]
public float PerimeterMean;
我注意到,我们可以通过从特征中删除列来做到这一点;
pipeline.Add(new ColumnConcatenator(outputColumn: "Features",
"TextureMean",
"PerimeterMean",
"AreaMean",
//delete not necessery columns
由此,我们可以改进我们的结果。但是,如果它像训练模型的 "deleting" 列一样工作?
第二个问题,有没有更快的制作柱子的方法?或者 ML.NET 中可能有从数据集中获取列的方法?
第一个问题:从Data.cs
中的输入class中删除列意味着TextLoader
将在读入时跳过该列文件。如果您根本不想使用它,这可能是最好的选择。
如果您不在 "Features" 列中包含该列,它将不会包含在训练中。学习者默认查看 "Features" 和 "Label" 列,因此不会使用其他列。但是,您仍然在支付阅读专栏的费用。如果您想将该列用于特征工程而不是训练,这可能很有用。
第二个问题:可以读入多列,如图here。这会将 784 个数字特征读入一列。
新的 API 将使许多专栏中的内容更易于阅读,如图 here 所示。这会将 10 列读入一个 "features" 向量列。
使用新的 API,模型自省将变得更加容易,这样您就可以了解哪些功能很重要,从而帮助您决定要包含哪些功能。
注意:我在 ML.NET 团队。